0
我使用Python來跟蹤本地SQLite和遠程網頁之間的版本。通過來自HTTP響應的最後修改和文件大小信息比較它們是有用的。我在開發過程中發現了一些有趣的事爲什麼Python將我的默認時區設置爲-1?
def time_match(web,sql):
print web,sql
t1 = time.strptime(web,"%a, %d %b %Y %H:%M:%S %Z")
t2 = time.strptime(sql,"%Y-%m-%d %H:%M:%S")
print t1,t2
if t1==t2:
print "same time"
else:
print "different time"
return t1==t2
在上面的代碼中,我試圖解碼從web和SQLite到內部時間的時間並進行比較。讓我們看看如下的打印屏幕:
Wed, 13 Oct 2010 01:13:26 GMT 2010-10-13 01:13:26
(2010, 10, 13, 1, 13, 26, 2, 286, 0) (2010, 10, 13, 1, 13, 26, 2, 286, -1)
different time
結果顯示GMT已正確解碼,而Python的默認時區datetime看起來爲-1。我的系統時區實際上是+8,-1是從哪裏來的? SQLite的?
謝謝!由於SQLite datetime不支持時區,我必須在處理之前刪除TZ信息。 – 2010-10-17 00:32:53
@ user369257 - 然後確保以UTC形式將任何日期時間存儲到您的數據庫中,並在您從數據庫讀取數據後立即添加utc tzinfo。這樣,您可以在沒有DST問題的數據庫中使用它。 – eumiro 2010-10-17 05:55:43