我有一个程序(sar 命令行实用程序),它输出带有时间列的行。我用我的 python 脚本解析这个文件,我想将 sar 转换02:31:33 PM
为纪元,例如1377181906
(当前年份、月份和日期,以及来自上述字符串的小时、分钟和秒)。如何以不那么繁琐的方式做到这一点?我试图自己做这件事,但坚持时间/日期时间和他们的方法。
问问题
3885 次
2 回答
9
这是一种方法:
- 使用将字符串读入日期时间
strptime
- 通过将 datetime 对象的年、月、日设置为当前日期的年、月和日
replace
- 通过将 datetime 转换为 unix 时间戳
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()从日期时间获取时间戳。
另见:
于 2013-08-22T14:45:45.787 回答
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
于 2013-08-22T15:17:06.353 回答