2

我有这样的时间格式

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 ?是否有日历库或类似的东西?

4

3 回答 3

2

datetime.datetime.strptime是你的朋友 :)

http://docs.python.org/library/datetime.html#datetime.datetime.strptime

于 2012-08-03T10:47:23.190 回答
1

使用时间模块中的strptime

于 2012-08-03T10:45:34.277 回答
1

使用time.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")
于 2012-08-03T10:46:03.360 回答