Python日期/时间格式

时间:2013-02-13 05:29:58

标签: python string datetime utc

我正在使用返回包含以下日期/时间的JSON字符串的API:

2013-03-14T14:15:23-07:00

我得到日期和时间,直到第二个。但最后5个字符令我困惑。我猜这是UTC偏移量。 (山区时间)我无法弄清楚怎么做是将上面的字符串与python中的日期/时间进行比较。 T也让我失望了。

如何编码python日期/时间字符串以匹配上述内容?

2 个答案:

答案 0 :(得分:2)

如果您使用python-dateutil库(https://crate.io/packages/python-dateutil/),则可以将该值转换为datetime

>>> dateutil.parser.parse('2013-03-14T14:15:23-07:00')
datetime.datetime(2013, 3, 14, 14, 15, 23, tzinfo=tzoffset(None, -25200))

答案 1 :(得分:2)

您正在查看ISO 8601日期格式。您可以使用package to parse it或自己动手。

您可以使用datetime.strptime来解析:

>>> ts='2013-03-14T14:15:23-07:00'
>>> datetime.datetime.strptime(ts[0:-6],'%Y-%m-%dT%H:%M:%S')
datetime.datetime(2013, 3, 14, 14, 15, 23)

然后只需添加/减去时间增量(对于'天真'对象):

>>> datetime.timedelta(hours=int(ts[-6:-3]))
datetime.timedelta(-1, 61200)

这样:

>>> d=datetime.datetime.strptime(ts[0:-6],'%Y-%m-%dT%H:%M:%S')+datetime.timedelta(hours=int(ts[-6:-3]))
>>> d
datetime.datetime(2013, 3, 14, 7, 15, 23)

棘手的部分是TZ是可选的,是否添加/减去时间偏移或在日期对象中设置时区。