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

时间:2016-05-28 14:48:12

标签: python datetime utc

所以我有以下字符串:“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格式,月份也是一年中的月份列表。

3 个答案:

答案 0 :(得分:2)

您可以使用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'

请记住,这是一个天真的'没有时区的物体。查看pytz以优雅地处理时区,或者只是为UTC的日期时间对象添加适当的utcoffset

答案 1 :(得分:1)

使用arrow

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

答案 2 :(得分:0)

您可以使用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'