2014-11-10 2 views
2

django에서 이벤트 앱을 만들고 있습니다.django 앱의 DST 시간대 문제

그래서 하나의 이벤트 개체 (DB의 행/항목)를 다른 개체로 복사해야합니다. 동일한 세부 사항을 가진 또 다른 객체를 생성합니다.

이 이벤트 개체에는 표준 시간대 및 주광 절약이 포함됩니다.

DST 중에 문제가 있습니다. 나는 물건을 복사하는 동안 5 일의 시간 델타를 적용했다. 보통의 일에서


이벤트 객체 1 날짜 : 2014년 11월 10일 오전 10시 36분

이벤트 객체 2 (사본 1) 날짜 : 2014년 11월 15일 (10) : 오전 36시

이 확인 ..!


그러나 DST 일 동안이 1 시간 변경을 원하지 않습니다.

이벤트 객체 1 날짜 : 2015년 10월 30일 10:36 오전

이벤트 객체 2 날짜 (1 복사) : 2015년 11월 4일, 9시 36분은 오전


DST 변경 중에 개체 2에서 1 시간이 자동으로 줄어 듭니다 (10 월 30 일은 DST에 속하므로 11 월 4 일은 아닙니다). 하지만 나는 같은 시간을 원해. 이 문제를 어떻게 해결할 수 있습니까 ???

답변

0

Timedeltas 대수학은 날짜가 아니라 시간을 더하거나 빼서 작동하므로 DST 변경을 통과 할 때 한 시간이 덜 걸립니다.

나는 가장 쉬운 해결책은 지역화 된 시간을 사용하고 정규화하지 않고 대수를 수행하는 것입니다. 이렇게하면 "잘못하고"있지만 원하는 것을 얻을 수 있습니다.

예 :

timestamp_1 = event.timestamp # we assume this datetime comes in UTC 
madrid = pytz.timezone('Europe/Madrid') 
madrid.localize(timestamp_1) 
timestamp_2 = timestamp_1 + datetime.timedelta(days=5) 
new_event = Event(timestamp=timestamp_2) 

는 참조 http://pytz.sourceforge.net/#localized-times-and-date-arithmetic