在Python中转换“yyyy-MM-dd'T'HH:mm:ss.SSSZ”格式的时间戳

时间:2013-07-05 17:37:36

标签: python timestamp

我有一个日志文件,其时间戳如“2012-05-12T13:04:35.347-07:00”。我想将每个时间戳转换为一个数字,以便我根据时间按升序对它们进行排序。

我怎样才能在Python中执行此操作?在Java中,我发现我可以使用SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSZ")为这种格式转换时间戳,但对于Python,我找不到任何内容。

1 个答案:

答案 0 :(得分:4)

由于py2.x与%z指令有问题,你可以这样做:

from datetime import timedelta,datetime
strs = "2012-05-12T13:04:35.347-07:00"
#replace the last ':' with an empty string, as python UTC offset format is +HHMM
strs = strs[::-1].replace(':','',1)[::-1]

由于datetime.striptime不支持%z(UTC偏移)(至少在py2.x中不支持),因此您需要解决此问题:

#Snippet taken from http://stackoverflow.com/a/526450/846892
try:
    offset = int(strs[-5:])
except:
    print "Error"

delta = timedelta(hours = offset / 100)

现在将格式应用于:'2012-05-12T13:04:35.347'

time = datetime.strptime(strs[:-5], "%Y-%m-%dT%H:%M:%S.%f")
time -= delta                #reduce the delta from this time object
print time
#2012-05-12 20:04:35.347000