Python 日期/时间格式化
我正在使用一个API,它返回的内容是一个包含日期和时间的JSON字符串,内容如下:
2013-03-14T14:15:23-07:00
我得到了日期和时间,精确到秒。但是最后的5个字符让我感到困惑。我猜那是UTC偏移量(山地时间)。我现在搞不清楚的是,如何将上面的字符串与Python中的日期/时间进行比较。还有那个“T”也让我感到困惑。
我该如何将Python中的日期/时间字符串编码成与上面的格式匹配呢?
2 个回答
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))
2
你看到的是ISO 8601日期格式。你可以使用一个包来解析它,或者自己动手来处理。
你可以用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)是可选的,你可以选择加减时间偏移,或者在日期对象中设置时区。