Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/337.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python datetime:获取带有时区偏移量的时间戳_Python_Datetime_Timezone - Fatal编程技术网

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