2012-09-22 64 views
2

我想解析python中的一些时间戳。他们是这样的:用时区偏移量解析UNIX时间戳(例如“14232335 +0200”)

1334423456 +0200 

这里显然是第一部分是一个UNIX时间戳,而第二部分的时区格式偏移“+ HHMM” /“ - HHMM”。我正在试图把它变成一个python.datetime对象。

我可以datetime.fromtimestamp使用第一部分:

datetime.fromtimestamp(s.split()[0]) 

,但我不知道如何来的第二部分(时区偏移)适用于它。任何帮助,将不胜感激。

回答

5

最简单的方法是使用iso8601 module;它包括一个(内部)时区分析器,它可以处理几乎您的格式;我们需要插入一个:跟随使其符合ISO 8601个时区:

import iso8601 
stamp, tz = s.split() 
timezone = iso8601.iso8601.parse_timezone(tz[:3] + ':' + tz[3:]) 
dt = datetime.fromtimestamp(int(stamp)).astimezone(timezone) 
+0

我不得不把 “+ HHMM” 转换 “+ HH:MM” 做这个手动:'S = S [3] +“:”+ s [3:]',但它的工作。谢谢。 – opatut

+0

@opatut:嗯,当然! :-)更新了答案,假装我知道这一点。 –