2012-08-03 47 views
2

我有一个时间格式像这样的Python:转换时间格式unix_timeformat

t = "2012-03-20T08:31:00-05:00" 

我可以提取使用这样的正则表达式时的内容。

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

回答

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") 
+0

ValueError异常:时间数据'2012-03-20T08:31:00-05:00'与格式不匹配'%Y-%m-%dT%H:%M:%S-%Z' – anjanesh 2012-08-03 10:50:19

+0

@anjanesh ye s,它似乎无法处理数字时区。查看我的更新。 – ecatmur 2012-08-03 10:56:55