我有一个字符串“ Fri,31 Dec 1999 23:59:59 GMT”,它来自重试。
我想将此与今天的日期时间进行比较。
我不了解如何使用GMT。
谁能帮我吗?
最佳答案
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
关于python - python datetime查询,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/6004063/