我想在python中将字符串解析为timestamp-with-timezone

时间:2016-02-23 08:24:25

标签: python parsing timestamp-with-timezone

我尝试用时区格式解析字符串到时间戳。

这是一个例子

"2016-02-18 16:13:07+09"

我想知道在 python中将此字符串格式解析为时间戳格式。

我该怎么做?

3 个答案:

答案 0 :(得分:2)

UTC偏移格式是否为字符串+09或+0900?

如果您的字符串中的偏移量是0900,您可以使用下面的内容。如果您的问题中提到的UTC偏移量仅为+09,则可以使用00填充字符串并获取以下代码。

<强>代码:

import datetime  
time="2016-02-18 16:13:07+0900"  
new_time=datetime.datetime.strptime(time,"%Y-%m-%d %H:%M:%S%z")  
print(new_time)  
new_time_python=datetime.datetime.strftime(new_time,"%m-%d-%y")  
print(new_time_python)  

输出

2016-02-18 16:13:07+09:00  
02-18-16 

答案 1 :(得分:1)

dateutil可能适合您的目的地:

from dateutil.parser import parser

p = parser()
d = p.parse('2016-02-18 16:13:07+09'.decode('utf-8'))  # must be unicode string
d
>>> datetime.datetime(2016, 2, 18, 16, 13, 7, tzinfo=tzoffset(None, 32400))

答案 2 :(得分:0)

如果可以将UTC偏移量指定为+HH+HHMM格式,则可以使用str.ljust() method来标准化输入时间字符串。然后你可以use .strptime() to parse it

#!/usr/bin/env python3
from datetime import datetime

time_string = "2016-02-18 16:13:07+09"
dt = datetime.strptime(time_string.ljust(24, "0"), "%Y-%m-%d %H:%M:%S%z")
# ->  datetime.datetime(2016, 2, 18, 16, 13, 7, 
#                       tzinfo=datetime.timezone(datetime.timedelta(0, 32400)))

如果您的Python版本不支持%z,请参阅How to parse dates with -0400 timezone string in python?