Python datetime:获取带有时区偏移量的时间戳
我希望以以下格式获取日期的时间戳:Python datetime:获取带有时区偏移量的时间戳,python,datetime,timezone,Python,Datetime,Timezone,我希望以以下格式获取日期的时间戳: Mon, 23 Nov 2020 19:00:00 GMT Mon, 23 Nov 2020 20:00:00 +0100 我使用以下语句将日期转换为datetime对象: dateobj = datetime.datetime.strptime(date, '%a, %d %b %Y %H:%M:%S %Z') dateobj = datetime.datetime.strptime(date, '%a, %d %b %Y %H:%M:%S %z') 但
Mon, 23 Nov 2020 19:00:00 GMT
Mon, 23 Nov 2020 20:00:00 +0100
我使用以下语句将日期转换为datetime
对象:
dateobj = datetime.datetime.strptime(date, '%a, %d %b %Y %H:%M:%S %Z')
dateobj = datetime.datetime.strptime(date, '%a, %d %b %Y %H:%M:%S %z')
但是使用.timestamp()
方法,打印的是不同于历元的秒数。为什么%Z
指令不向datetime
对象添加时区信息?我怎样才能把时区考虑进去,这样时间戳就相等了?请注意。您的问题是%Z
,它使strtime
接受某些字符串(GMT、UTC和time.tzname中的任何值),但实际上并没有从中得到任何东西。返回的datetime对象是幼稚的,这就是为什么如果调用它的timestamp()
方法,Python会假定它是本地时间
您可以改用dateutil的解析器:
from dateutil.parser import parse
for s in ("Mon, 23 Nov 2020 19:00:00 GMT", "Mon, 23 Nov 2020 20:00:00 +0100"):
dt = parse(s)
print(repr(dt), dt.timestamp())
# datetime.datetime(2020, 11, 23, 19, 0, tzinfo=tzutc()) 1606158000.0
# datetime.datetime(2020, 11, 23, 20, 0, tzinfo=tzoffset(None, 3600)) 1606158000.0
请注意。您的问题是%Z
,它使strtime
接受某些字符串(GMT、UTC和time.tzname中的任何值),但实际上并没有从中得到任何东西。返回的datetime对象是幼稚的,这就是为什么如果调用它的timestamp()
方法,Python会假定它是本地时间
您可以改用dateutil的解析器:
from dateutil.parser import parse
for s in ("Mon, 23 Nov 2020 19:00:00 GMT", "Mon, 23 Nov 2020 20:00:00 +0100"):
dt = parse(s)
print(repr(dt), dt.timestamp())
# datetime.datetime(2020, 11, 23, 19, 0, tzinfo=tzutc()) 1606158000.0
# datetime.datetime(2020, 11, 23, 20, 0, tzinfo=tzoffset(None, 3600)) 1606158000.0