Python 日期/时间格式化

3 投票
2 回答
1584 浏览
提问于 2025-04-17 15:42

我正在使用一个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)是可选的,你可以选择加减时间偏移,或者在日期对象中设置时区。

撰写回答