2012-08-10 2 views
9

나는이 내 모델 중 하나에 다음 코드 :문자열에 UTC 시간을 생산

def shortDescription(self): 
    return self.name + ' ' + self.class_date.strftime("%I:%M") 

self.class_date이 시간대 인식 DateTimeField, self.class_date.is_aware() True이면 USE_TZ는 True입니다.

shortDescription은 기본 시간대가 아닌 UTC로 시간을 제공하는 문자열을 반환합니다. 템플릿의 {{aclass.class_date}}를 사용하면 올바른 시간대에 시간이 표시됩니다.

strftime은 항상 기초적인, 순진한 시간에 작동합니까? 아니면 여기서 또 무슨 일이 일어나고있는거야?

+0

당신이 무엇을 : 당신은 자동으로이 작업을 수행하는 date 필터에 의존 할 수

from django.utils import timezone def shortDescription(self): class_date = timezone.localtime(self.class_date) return self.name + ' ' + class_date.strftime("%I:%M") 

을 또는 : 당신이 더 필요한 경우

, 당신은 그것을 변환해야합니다 "시간대 인식 날짜"를 의미합니까? 어떤 계급입니까? –

답변

29

%I 또는 %M과 같은 datetime 부분을 직접 참조 할 때 로캘 변환없이 그대로 사용합니다. %Z을 포함하면 시간은 UTC입니다. 로케일 인식 결과를 원할 경우 더 제한된 %X을 사용해야합니다. 그러면 로캘 용으로 변환 된 전체 시간이 단순히 소모됩니다.

from django.template import defaultfilters 

def shortDescription(self): 
    return self.name + ' ' + defaultfilters.date(self.class_date, 'g:i') 
+0

우수. 그리고 defaultfilters 트릭에 대해 전혀 몰랐습니다. –

+1

네, 항상 사용하고 있습니다. Django 템플릿 필터는 일반적인 메소드 일 뿐이므로 코드에서 어디에서나 사용할 수 있습니다. 'defaultfilters.slugify'는 매우 편리합니다. –

+0

완벽 .......... –

관련 문제