programing

장고에서 시간대를 설정하는 방법

jooyons 2023. 5. 25. 21:57
반응형

장고에서 시간대를 설정하는 방법

의 내장고트에서에서.settings.py파일, 나는 다음 줄을 가지고 있습니다.

TIME_ZONE = 'UTC'

하지만 나는 내 앱이 UTC+2 표준 시간대에서 실행되기를 원해서 그것을 변경했습니다.

TIME_ZONE = 'UTC+2'

" 오류가 합생니다발다니"라는 .ValueError: Incorrect timezone setting: UTC+2올바른 방법은 무엇입니까?

감사합니다!

다음은 유효한 시간대 목록입니다.

http://en.wikipedia.org/wiki/List_of_tz_database_time_zones

사용할 수 있습니다.

TIME_ZONE = 'Europe/Istanbul'

UTC+02:00용

tz 데이터베이스에서 유효한 모든 시간대 이름(id) 집합을 가져오려면 Python에서 모듈을 사용할 수 있습니다.

>>> import pytz # $ pip install pytz
>>> pytz.all_timezones_set
LazySet({'Africa/Abidjan',
         'Africa/Accra',
         'Africa/Addis_Ababa',
         'Africa/Algiers',
         'Africa/Asmara',
         'Africa/Asmera',
         ...
         'UTC',
         'Universal',
         'W-SU',
         'WET',
         'Zulu'})

tzinfo 데이터베이스에서 올바른 시간대를 선택합니다.예를 들어, 그들은 형태를 취하는 경향이 있습니다. Africa/Gaborne그리고.US/Eastern

시간대가 을 설정하세요.TIME_ZONE어울리게

유효한 timeZone 값은 Linux 및 기타 Unix 시스템에서 사용되는 tz(시간대) 데이터베이스를 기반으로 합니다.값은 "Area/Location" 형식의 문자열(xsd:string)이며, 다음과 같습니다.

지역은 대륙 또는 바다 이름입니다.현재 포함되는 영역:

  • 아프리카
  • 미국(북미 및 남미 모두)
  • 남극대륙
  • 북극
  • 아시아
  • 애틀랜틱
  • 호주.
  • 유럽
  • 기타(관리 구역).예를 들어, "Etc/UTC"는 협정 세계시를 나타냅니다.)
  • 인디언의
  • 태평양의

위치는 도시, 섬 또는 기타 지역 이름입니다.

영역 이름과 출력 약어는 POSIX(휴대용 운영 체제 인터페이스) UNIX 규약을 준수합니다. POSIX는 그리니치 서쪽의 양(+) 기호와 그리니치 동쪽의 음(-) 기호를 사용합니다. 이는 일반적으로 예상되는 것과 반대입니다.예를 들어, "Etc/GMT+4"는 UTC(조정 세계시)(그린위치 동쪽)보다 4시간 늦은 것입니다.

여기 모든 유효한 시간대 목록이 있습니다.

settings.py 에서 다음과 같이 시간대를 변경할 수 있습니다.

LANGUAGE_CODE = 'en-us'

TIME_ZONE = 'Asia/Kolkata'

USE_I18N = True

USE_L10N = True

USE_TZ = True

이것은 저에게 잘 작동합니다(저는 여전히 현지에서 앱을 테스트하고 있습니다).settings.py파일 형식:

LANGUAGE_CODE = 'en-us'

TIME_ZONE = 'Asia/Beirut'

USE_I18N = True

USE_L10N = True

USE_TZ = False

#자신만의 TIME_ZONE 사용하기: https://gist.github.com/heyalexej/8bf688fd67d7199be4a1682b3eec7568

장고의 TZ 이름 지원을 기반으로 한 범용 솔루션:

UTC-2 = 'Etc/GMT+2'
UTC-1 = 'Etc/GMT+1'
UTC = 'Etc/GMT+0'
UTC+1 = 'Etc/GMT-1'
UTC+2 = 'Etc/GMT-2'

의도적으로 전환되었습니다.

  1. TIME_ZONE을 로컬 표준시로 변경하고 USE_TZ를 '설정에서 True로 유지합니다.파이':

    TIME_ZONE = '아시아/상하이'

    USE_I18N = 참

    USE_L10N = 참

    USE_TZ = 참

  2. 이렇게 하면 datetime 개체가 UTC로 백엔드 데이터베이스에 기록되고 저장됩니다.

  3. 그런 다음 템플릿 태그를 사용하여 프런트엔드 템플릿의 UTC 시간을 다음과 같이 변환합니다.

                <td> 
                    {% load tz %}
                    {% get_current_timezone as tz %}
                    {% timezone tz %}
                        {{ message.log_date | time:'H:i:s' }}
                    {% endtimezone %} 
                </td>
    

또는 템플릿 필터를 간결하게 사용합니다.

                <td> 
                    {% load tz %}
                    {{ message.log_date | localtime | time:'H:i:s' }}
                </td>
  1. 자세한 내용은 공식 문서에서 확인할 수 있습니다: 기본 표준 시간대현재 표준 시간대

    표준 시간대 지원이 활성화되면 Django는 데이터베이스에 날짜/시간 정보를 UTC에 저장하고, 표준 시간대 인식 날짜/시간 객체를 내부적으로 사용하며, 이를 템플릿 및 양식으로 최종 사용자의 표준 시간대로 변환합니다.

저는 이 질문이 제 장고 프로젝트의 표준 시간대를 변경하려고 하는 것을 발견했습니다.settings.py영국에 제출합니다.

jfs의 솔루션에서 tz 데이터베이스를 사용하여 다음과 같은 답을 찾았습니다.

    TIME_ZONE = 'Europe/London'

다음은 유효한 시간대 목록입니다.

http://en.wikipedia.org/wiki/List_of_tz_database_time_zones

다카의 시간대를 사용할 수 있습니다.

TIME_ZONE = 'Asia/Dhaka'

UTC+06:00(다카 또는 아스타나)

  1. 다음에서 최신 pytz 파일(pytz-2019.3.tar.gz)을 다운로드합니다.

    https://pypi.org/simple/pytz/
    
  2. 복사하여 추출합니다.site_packages프로젝트의 디렉터리

  3. in cmd는 추출된 폴더로 이동하여 다음을 실행합니다.

    python setup.py install
    
  4. TIME_ZONE = 'Etc/GMT+2'또는 국가 이름

영역/위치 형식을 올바르게 사용합니다.예:

TIME_ZONE = 'Asia/Kolkata'

기본 설정 TIME_ZONE을 추가하고 다음과 같이 USE_TZ를 False로 설정합니다.

  • TIME_ZONE = '아시아/콜카타'
  • USE_TZ = 거짓

효과가 있기를 바랍니다.

언급URL : https://stackoverflow.com/questions/29311354/how-to-set-the-timezone-in-django

반응형