我正在编写一个python脚本来从日志文件中挖掘一些信息。在此文件中,时间戳记格式为'%b%d%H:%M:%S'或2月20日09:24:27,即缺少年份。我希望能够将其与当前时间进行比较,因此需要将其转换为日期时间对象。
所以我做到了:
timeformat='%b %d %H:%M:%S'
timestamp=datetime.strptime(timetext,timeformat)
然后将上述时间戳返回1900-02-20 09:27:45-即我写2020年时有120年的时间了。
我解决这个问题的第一个想法就是要做
now=datetime.now()
timeformat='%b %d %H:%M:%S'
timestamp=datetime.strptime(timetext,timeformat)
timestamp.replace(year=now.year)
但是在写这篇文章之前,我意识到当文件包含去年的条目时,这是行不通的。最后,我检查了时间戳的Julian日期与现在的Julian日期,所以现在我的解析例程如下所示:
timestamp=datetime.strptime(timetext,timeformat)
if timestamp.timetuple().tm_yday>now.timetuple().tm_yday:
year=now.year-1
else:
year=now.year
timestamp=timestamp.replace(year=year)
当然,如果我有将近一年前的日志条目(在同一个儒略日)是无效的,但是在一天的晚些时候,如果我返回了一年以上,它将不起作用-但是在这种情况下,系统无论如何,由于时间戳中缺少年份而造成麻烦。
因此,对于我来说,上面的代码可以正常工作,但是我不喜欢它的“气味”,感觉很笨拙。有没有更好的办法在时间戳中设置年份?当然,我可以操纵我的现值,但是据我所知,这可以带我走同样的路。