Python 如何将以字符串形式给出的日期转换为unix时间戳,包括时区,月份以缩写形式给出

Python 如何将以字符串形式给出的日期转换为unix时间戳,包括时区,月份以缩写形式给出,python,date,unix-timestamp,Python,Date,Unix Timestamp,我有以下字符串: 08 Jan 2018 08:45:30 +0100 我想将其插入unix时间戳。我知道如何从这个答案中转换时间,但是这只描述了如果名称以数字形式给出,如01/12/1991,如何转换时间。此外,我不知道如何将timezoen(+0100)包含到转换中 对于这个月,我会想出一个查找表,这是一个解决办法,我认为可能有更好的方法来做到这一点 下面是我为这一点提出的代码: lookup = {} lookup['Jan'] = '01' lookup['Feb'] = '02'

我有以下字符串:

08 Jan 2018 08:45:30 +0100
我想将其插入unix时间戳。我知道如何从这个答案中转换时间,但是这只描述了如果名称以数字形式给出,如
01/12/1991
,如何转换时间。此外,我不知道如何将timezoen(+0100)包含到转换中

对于这个月,我会想出一个查找表,这是一个解决办法,我认为可能有更好的方法来做到这一点

下面是我为这一点提出的代码:

lookup = {}


lookup['Jan'] = '01'
lookup['Feb'] = '02'
lookup['Mar'] = '03'
lookup['Apr'] = '04'
lookup['Mai'] = '05'
lookup['Jun'] = '06'
lookup['Jul'] = '07'
lookup['Aug'] = '08'
lookup['Sep'] = '09'
lookup['Okt'] = '10'
lookup['Nov'] = '11'
lookup['Dec'] = '12'

dates_to_convert = '08 Jan 2018 08:45:30 +0100'


dates_to_convert.replace(dates_to_convert.split()[1],lookup[dates_to_convert.split()[1]])

## Now continue with solution from linked answer...

如果您查看,您将看到
%b
模式匹配缩写的月份名称,并且
%z
处理时区偏移:

%b
Month作为区域设置的缩写名称

[……]

%z
UTC偏移量,格式为+HHMM或-HHMM(如果对象是原始对象,则为空字符串)

除非您设置了区域设置,否则默认的
C
locale会立即与我们的月份名称匹配

对于您的字符串,模式是
%d%b%Y%H:%M:%S%z

>>> from datetime import datetime
>>> dates_to_convert = '08 Jan 2018 08:45:30 +0100'
>>> datetime.strptime(dates_to_convert, '%d %b %Y %H:%M:%S %z')
datetime.datetime(2018, 1, 8, 8, 45, 30, tzinfo=datetime.timezone(datetime.timedelta(seconds=3600)))

如果您查看,您将看到
%b
模式匹配缩写的月份名称,并且
%z
处理时区偏移:

%b
Month作为区域设置的缩写名称

[……]

%z
UTC偏移量,格式为+HHMM或-HHMM(如果对象是原始对象,则为空字符串)

除非您设置了区域设置,否则默认的
C
locale会立即与我们的月份名称匹配

对于您的字符串,模式是
%d%b%Y%H:%M:%S%z

>>> from datetime import datetime
>>> dates_to_convert = '08 Jan 2018 08:45:30 +0100'
>>> datetime.strptime(dates_to_convert, '%d %b %Y %H:%M:%S %z')
datetime.datetime(2018, 1, 8, 8, 45, 30, tzinfo=datetime.timezone(datetime.timedelta(seconds=3600)))

您可以组合使用
datetime.strtime
来解析字符串,也可以组合使用
datetime.timestamp
来输出UNIX时间戳


像这样的方法应该会奏效:

from datetime import datetime

datetime.strptime('08 Jan 2018 08:45:30 +0100', '%d %b %Y %H:%M:%S %z').timestamp()
>>> 1515397530.0
如果只需要整数部分(秒):


您可以组合使用
datetime.strtime
来解析字符串,也可以组合使用
datetime.timestamp
来输出UNIX时间戳


像这样的方法应该会奏效:

from datetime import datetime

datetime.strptime('08 Jan 2018 08:45:30 +0100', '%d %b %Y %H:%M:%S %z').timestamp()
>>> 1515397530.0
如果只需要整数部分(秒):


一定要看一下,你会发现还有一个用于缩写月份名称的模式匹配器。@Martijn Pieters谢谢你-但是时区呢?你把表往下看了吗?:-)一定要看一下,你会发现还有一个用于缩写月份名称的模式匹配器。@Martijn Pieters谢谢你-但是时区呢?你把表往下看了吗?:-)