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