ipdb> django.utils.timezone.get_default_timezone()

 
Han Cold Kim

ipdb> django.utils.timezone.get_default_timezone()

이렇게 나오는데… 이렇게 나오는게 맞나요…?

project/settings.py에 TIME_ZONE는 ‘Asiz/Seoul’로 지정하고

USE_TZ = True 해주면

model의 datetime속성 알아서 localization될 줄알았는데

그게 아닌것같네요…;;

아니면 또 설정해줘야 하는 부분이 있는건가요…?

문서를 읽어봐도.. 깔끔한 내용을 못찾겠네요…

  • Chinseok Lee

    get_default_timezone 소스코드를 보니 pytz 가 설치되어있어야, settings.TIME_ZONE 를 참조하네요.
    https://github.com/django/django/blob/master/django/utils/timezone.py#L177

    https://docs.djangoproject.com/en/dev/topics/i18n/timezones/ 에 설명이 잘 되어있습니다.

    Han Cold Kim

    이미 pytz가 설치되어있고,

    localization이 아예 안되고있는줄 알았더니

    장고 admin에서는 또 localization이 잘 되고있네요…

    지금 제가 원하는 동작은

    model의 dateime속성을 date로 변환시켜서 json으로 response를 해주는데요,

    date로 변환하기 전에…

    해당 datetime를 찍어봤더니…

    datetime.datetime(2014, 5, 4, 13, 4, 23, tzinfo=)

    tzinfo가 UTC로 되어 있는데…

    이걸 UTC+9로 하고 그에 대한 날짜 및 시간도 적절히 계산되게 하고싶은데…

    Han Cold Kim

    그리고… pytz버그가 좀 있는것같네요…

    pytz.timezone(‘Asia/Tokyo’)

    하면 +9 제대로 나오는데

    pytz.timezone(‘Asia/Seoul’)

    서울로 하면… +8시 28분… ㅋㅋㅋ

    Chinseok Lee

    datetime 에 대한 timezone 변환은 템플릿 단에서 수행됩니다. admin 페이지도 템플릿을 거쳐서 보기 때문에 변환되어 보이는 것이구요.
    https://docs.djangoproject.com/en/dev/topics/i18n/timezones/#time-zone-aware-output-in-templates

    json 응답을 하실 때에는 따로 localtime 변환을 해주시면 됩니다.
    from django.utils.timezone import localtime
    response = { ‘time’: localtime(utc_datetime) }

    —-

    http://tumblr.everyevery.net/post/43373522622/python-timezone

    Kenial Lee

    28분은 조금 이상하네요; 서울의 timezone offset을 도쿄보다 느린 시간으로 잡아야 한다는 의견이 예전부터 있어서 +8:30으로 하는 경우도 있을겁니다만 실제로는 +9에 맞추다보니 … Asia/Tokyo을 대신 사용하는 경우가 있다고 들었습니다.

    그리고 현재 로컬의 tz이 적용된 datetime을 구하려면 위에 진석님이 말씀하신 것처럼 locatime을 사용하시면 됩니다. 간단하게는 이렇게요:

    django.utils.timezone.localtime(django.utils.timezone.now())

    Han Cold Kim

    답변 감사합니다!

Advertisements