0
如何修改下面的代碼來處理時區,請注意沒有小數。轉換Iso8601與非十進制UTC區域防範
2015-12-22T11:57:11-08:00
,-8:00
正在造成我的問題,是否劃時代考慮時區?
timegm(datetime.strptime(datestring, "%Y-%m-%dT%H:%M:%S.%f").timetuple())
如何修改下面的代碼來處理時區,請注意沒有小數。轉換Iso8601與非十進制UTC區域防範
2015-12-22T11:57:11-08:00
,-8:00
正在造成我的問題,是否劃時代考慮時區?
timegm(datetime.strptime(datestring, "%Y-%m-%dT%H:%M:%S.%f").timetuple())
這裏有幾個問題。
要回答你的問題,是的,時區很重要。 UNIX時代自1970-01-01T00:00:00 + 00:00起秒。更重要的是,即使您在解析字符串時正確指定了對象的tzinfo
,timetuple
也不會考慮到tzinfo
。你需要使用utctimetuple
所以現在你只需要正確解析日期時間。有跡象表明,不使用外部庫解決方案,但我發現解析ISO8601日期字符串的最簡單的方法是通過PIP利用現有蟒蛇-dateutil包:
>>> import calendar
>>> from dateutil import parser
>>> datestring = '2015-12-22T11:57:11-08:00'
>>> tz_aware_datetime = parser.parse(datestring)
>>> tz_aware_datetime
datetime.datetime(2015, 12, 22, 11, 57, 11, tzinfo=tzoffset(None, -28800))
>>> calendar.timegm(tz_aware_datetime.utctimetuple())
1450814231
@Padraic坎寧安不作爲複製的部分「正常'的時間字符串丟失 –
缺少什麼? –