2011-05-14 50 views
1

我有一個字符串「Fri,1999年12月31日23:59:59 GMT」,它來自於重試後。
我想比較一下今天的日期時間。
我不明白如何使用GMT。
任何人都可以幫我嗎?python datetime query

回答

3

使用dateutilpytz

import datetime as dt 
import dateutil.parser as parser 
import pytz 

date_string="Fri, 31 Dec 1999 23:59:59 GMT"  
then=parser.parse(date_string) 

eastern=pytz.timezone('US/Eastern') 
now=eastern.localize(dt.datetime.now()) 

print(repr(then)) 
# datetime.datetime(1999, 12, 31, 23, 59, 59, tzinfo=tzutc()) 

print(repr(now)) 
# datetime.datetime(2011, 5, 14, 15, 51, 48, 438283, tzinfo=<DstTzInfo 'US/Eastern' EDT-1 day, 20:00:00 DST>) 

print(then-now) 
# -4152 days, 4:08:10.561717 

與時區交易可能會非常棘手。 處理任意時區轉換的最簡單和最可靠的方法是使用pytz

如果您確定date_string將在GMT時區,那麼有一種方法可以在沒有pytz模塊的情況下在GMT和當地時間之間進行轉換。 但是,請注意:雖然轉換提供了正確的(幼稚)本地日期時間,二天真的日期時間的差異可以通過一個小時被關閉,由於缺乏佔夏令時:

import datetime as dt 
import calendar 

date_string="Fri, 31 Dec 1999 23:59:59 GMT" 
then=dt.datetime.strptime(date_string, "%a, %d %b %Y %H:%M:%S %Z") 
# convert to localtime, assuming date_string is in GMT: 
then=dt.datetime.fromtimestamp(calendar.timegm(then.timetuple())) 
now=dt.datetime.now() 

print(repr(then)) 
# datetime.datetime(1999, 12, 31, 18, 59, 59) 

print(repr(now)) 
# datetime.datetime(2011, 5, 14, 15, 50, 7, 38349) 

print(then-now) 
# -4152 days, 3:09:51.961651