我有一个字符串lfile
其中包含日期时间( type(lfile)
给出 <type 'str'>
)和 Python 日期时间对象 wfile
。这是代码:
import os, datetime
lfile = '2005-08-22_11:05:45.000000000'
time_w = os.path.getmtime('{}\\{}.py' .format('C:\Temp_Readouts\RtFyar','TempReads.csv'))
wfile = datetime.datetime.fromtimestamp(time_w)
wfile
包含这个2006-11-30 19:08:06.531328
和repr(wfile)
给出:
datetime.datetime(2006, 11, 30, 19, 8, 6, 531328)
问题:
我需要:
- 转换
lfile
转换为 Python 日期时间对象 - 比较
lfile
至wfile
并确定哪个日期时间更近
对于 1:
我只能使用 strptime
获得部分解决方案根据here 。这是我尝试过的:
lfile = datetime.datetime.strptime(linx_file_dtime, '%Y-%m-%d_%H:%M:%S')
输出为:
`ValueError: unconverted data remains: .000`
问题 1
看来strptime()
cannot处理纳秒。我怎么告诉strptime()
忽略最后 3 个零?
对于 2:
当我使用type(wfile)
时我得到<type 'datetime.datetime'>
。如果两者wfile
和lfile
是 Python 日期时间对象(即,如果步骤 1. 成功),则 this工作?:
if wtime < ltime:
print 'Linux file created after Windows file'
else:
print 'Windows file created after Linux file'
问题 2
或者Python是否可以通过其他方式比较日期时间对象来确定两者中哪一个发生在另一个之后?
最佳答案
问题1
Python 处理微秒,而不是纳秒。您可以去掉时间的最后三个字符,将其转换为微秒,然后在末尾添加 .%f
:
lfile = datetime.datetime.strptime(linx_file_dtime[:-3], '%Y-%m-%d_%H:%M:%S.%f')
问题2
是的,比较有效:
if wtime < ltime:
...
关于Python 将字符串转换为日期时间以便与日期时间对象进行比较,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38625723/