如何将HH:MM:SS字符串转换为UNIX纪元时间?

时间:2013-08-22 14:37:54

标签: python datetime time

我有一个程序(sar command line utility),它输出带有时间列的行。我用我的python脚本解析这个文件,我想将sar的02:31:33 PM转换为时期,例如1377181906(当前年,月,日,上述字符串的小时,分​​钟和秒)。怎么能以一种不那么繁琐的方式完成?我试图通过自己做到这一点,但坚持时间/日期时间和他们的方法群。

2 个答案:

答案 0 :(得分:9)

这是一种方法:

  • 使用strptime
  • 将字符串读入日期时间
  • 通过replace
  • 将datetime对象的年,月,日设置为当前日期的年,月和日
  • 通过calendar.timegm
  • 将datetime转换为unix时间戳

>>> from datetime import datetime
>>> import calendar
>>> dt = datetime.strptime("02:31:33 PM", "%I:%M:%S %p")
>>> dt_now = datetime.now()
>>> dt = dt.replace(year=dt_now.year, month=dt_now.month, day=dt_now.day)
>>> calendar.timegm(dt.utctimetuple())
1377138693

请注意,在python> = 3.3中,您可以通过调用dt.timestamp()从日期时间获取时间戳。

另见:

答案 1 :(得分:4)

另一种拥有纪元时间的方法是使用时间模块中的 mktime 并传递日期的时间元组,这样你就可以这样做:

>>> from datetime import datetime
>>> from time import mktime
>>> dt = datetime.strptime("02:31:33 PM", "%H:%M:%S %p")
>>> dt_now = datetime.now()
>>> dt = dt.replace(year=dt_now.year, month=dt_now.month, day=dt_now.day)
>>> int(mktime(dt.timetuple()))
1377131493