Python日期/时间格式化

3
我正在使用一个API,它返回一个包含以下日期/时间的JSON字符串:
2013-03-14T14:15:23-07:00

我获取了日期和时间,直到秒。但是最后的5个字符使我感到困惑。我猜这是UTC偏移量。(山区时间)但我无法确定如何将上述字符串与Python中的日期/时间进行比较。T也让我感到困惑。
我该如何编码Python日期/时间字符串以匹配上述格式?

1
您正在查看isoformat - mgilson
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))

太好了!那正是我需要的。现在唯一困扰我的是如何以偏移感知格式获取当前日期时间,以便我可以进行比较。我仍在努力理解Python如何处理日期/时间。 - Matt Keller
1
你应该能够在你的datetime上使用.replace(tzinfo=...)函数。给它一个时区参数可以使其有意识,而None则使其无意识。 - dirn

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)

对于“naive”对象,只需添加/减去时间差:

>>> 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是可选的,您需要在日期对象中添加/减去时间偏移量或设置时区。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接