如何将“2016 年 1 月 1 日”转换为 UTC ISO 格式?

How to convert "01 January 2016" to UTC ISO format?

所以我有以下字符串:“2016 年 1 月 1 日”到 UTC ISO 日期格式?

我正在使用箭头模块和以下代码,但它充满了错误,我想可能有一个更小更优雅的解决方案,因为 python 鼓励优雅和更简单的方法事情,无论如何这是我的代码:

updateStr = " 01 January 2016" #Note the space at the beginning
dateList = updateStr.split[' ']
dateDict = {"day" : dateList[1],"month": months.index(dateList[2])+1, "year" : dateList[3]}
dateStr = str(dateDict['day']) + "-" + str(dateDict["month"]) + "-" + str(dateDict["year"])
dateISO = arrow.get(dateStr, 'YYYY-MM-DD HH:mm:ss')

请帮助我,我必须将它转换为 UTC ISO 格式,另外 months 是一年中月份的列表。

您可以使用 datetime 的方法解析此日期字符串,然后将其重新格式化为 UTC 格式:

>>> from datetime import datetime
>>> updateStr = " 01 January 2016" #Note the space at the beginning
>>> d = datetime.strptime(updateStr, '  %d %B %Y') # Same space here
>>> s = datetime.isoformat(d)
>>> s
'2016-01-01T00:00:00'

您可以使用 datetime:

>>> updateStr = " 01 January 2016"
>>> import datetime as dt
>>> dt.datetime.strptime(updateStr, " %d %B %Y")
datetime.datetime(2016, 1, 1, 0, 0)
>>> _.isoformat()
'2016-01-01T00:00:00'

请记住,这是一个没有时区的 'naive' 对象。查看 pytz to deal with timezones elegantly, or just add an appropriate utcoffset 到 UTC 的日期时间对象。

使用arrow:

>>> import arrow
>>> updateStr = " 01 January 2016"
>>> arrow.get(updateStr, "DD MMMM YYYY").isoformat()
'2016-01-01T00:00:00+00:00'
>>>