我有这样的时间格式
t = "2012-03-20T08:31:00-05:00"
我可以像这样使用 RegEx 提取时间内容。
p = re.compile("(\d{4})\-(\d\d)\-(\d\d)T(\d\d):(\d\d):(\d\d)[\-|+]\d\d:\d\d")
matches = p.findall(t)
但我想知道是否有办法将此格式直接转换为 unix_timestamp 而不使用 RegEx ?是否有日历库或类似的东西?
我有这样的时间格式
t = "2012-03-20T08:31:00-05:00"
我可以像这样使用 RegEx 提取时间内容。
p = re.compile("(\d{4})\-(\d\d)\-(\d\d)T(\d\d):(\d\d):(\d\d)[\-|+]\d\d:\d\d")
matches = p.findall(t)
但我想知道是否有办法将此格式直接转换为 unix_timestamp 而不使用 RegEx ?是否有日历库或类似的东西?
datetime.datetime.strptime
是你的朋友 :)
http://docs.python.org/library/datetime.html#datetime.datetime.strptime
使用时间模块中的strptime
time.strptime(t, "%Y-%m-%dT%H:%M:%S-%Z")
不幸的是,这似乎不适用于数字时区偏移。 python-dateutil应该能够处理您的格式:
dateutil.parser.parse(t)
或者,您可以在数字偏移量之前拆分字符串:
t, offset_sign, offset = t[:-6], t[-6], t[-5:]
t = time.strptime(t, "%Y-%m-%dT%H:%M:%S")
offset = time.strptime(offset, "%H:%M")