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