我有一个程序 ( sar command line utility ),它输出带有时间列的行。我用我的 python 脚本解析这个文件,我想将 sar 的 02:31:33 PM
转换成纪元,例如1377181906
(当前年、月、日以及来自上述字符串的小时、分钟和秒)。这怎么能以不那么麻烦的方式完成呢?我试着自己做这件事,但坚持使用时间/日期时间和他们的方法群。
最佳答案
这是一种方法:
- 使用
strptime
将字符串读入日期时间 - 通过
replace
将日期时间对象的年月日设置为当前日期的年月日 - 通过
calendar.timegm
将日期时间转换成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() 从日期时间获取时间戳.
另见:
关于python - 如何转换 HH :MM:SS string to UNIX epoch time?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18383528/