2011-10-25 48 views
3

我迷失在tzinfo文檔中。python datetime現在沒有夏時制

我想爲我的位置創建一個不包含夏令時調整的日期時間對象。

此刻我很醜盜號的:

import time 
import datetime 
now=datetime.datetime.now() 
if time.localtime().tm_isdst==1: 
    now=now+datetime.timedelta(hours=-1) 

什麼是正確的方式?

+1

您的解決方案對我來說似乎很合理,而且也很清楚。 – amicitas

+0

我不同意 - 目前我有一個日期時間對象,被歸類爲夏令時包含,但是是一小時前,而不是實際現在。如果我開始與其他日期時間對象進行比較,這可能會造成混淆。我正在尋找一種方法來實例化一個datetime對象,該對象的tzinfo中沒有夏時制,因此不需要幻數。 – meepmeep

回答

6

如果您確實想通過去除DST的效果來創建「僞造」時間,您當前的解決方案將工作。

但是,使用日期的最佳做法是在內部將所有日期表示爲UTC,並且只處理用戶交互的時區差異。這樣你就不必關心所有混亂的細節。

要將所有時區的支持添加到您的程序中,請考慮使用PyTZ

+2

對於使用UTC的建議,這確實是正確的方法。 UTC是毫不含糊的,這是與時間一起工作時必不可少的財產。 –

+0

我不想要一個假的時間,否則我不會問 - 感謝PyTZ的推薦 – meepmeep

+0

@meepmeep:也許你現在不再需要僞造時間,現在人們推薦你使用UTC時間。 ..;) –