Python 上次文件修改时间返回自DST更改后一年的偏移量
为了获得文件的修改时间,我使用ftputil中的Python 上次文件修改时间返回自DST更改后一年的偏移量,python,datetime,dst,datetimeoffset,ftputil,Python,Datetime,Dst,Datetimeoffset,Ftputil,为了获得文件的修改时间,我使用ftputil中的path.getmtime,但由于DST更改,最近创建的文件的返回值有一年的偏移量,表示新文件的上次修改时间是从去年开始的。实际上,该文件在“未来”一小时内被修改过。 原因是存储文件的操作系统在DST上运行,但脚本在非DST上运行。 总的来说,我想删除超过阈值的文件,但现在它也在删除最新的文件,因为它说它是从2018年开始的 我尝试将带有datetime.utcfromtimestamp的时间戳转换为UTC时间,但显然getmtime不会返回文件的
path.getmtime
,但由于DST更改,最近创建的文件的返回值有一年的偏移量,表示新文件的上次修改时间是从去年开始的。实际上,该文件在“未来”一小时内被修改过。原因是存储文件的操作系统在DST上运行,但脚本在非DST上运行。
总的来说,我想删除超过阈值的文件,但现在它也在删除最新的文件,因为它说它是从2018年开始的 我尝试将带有
datetime.utcfromtimestamp
的时间戳转换为UTC时间,但显然getmtime不会返回文件的实际时间戳。去年,它已经将其设定为2018年,因为它的价值可能来自未来
比如说2019-04-04 10:00:00 UTC。
运行在DST(UTC+1)上的主机上的文件在10:45创建
导入ftputil
导入日期时间
导入时间
主机=ftputil.FTPHost(ftp,用户,pwd)
modtime=host.path.getmtime(文件)
打印datetime.datetime.utcfromtimestamp(modtime)
输出应该是2019-04-04 09:45:00,但实际上是2018-04-04 09:45:00。
我可以用datetime格式做任何我想做的事情,只要getmtime通过2018年的时间戳,它就永远不会正确
有没有一种方法可以传递正确的时间戳,有没有getmtime
?
老实说,我不想手动操作它。
或者,是什么将其更改为一年抵销
#firsttimeposter如果您在FTP服务器上的某个目录中具有写访问权限,则可以调用
FTPHost.synchronize_times()
。这将在服务器上临时创建一个文件,ftputil将解析该文件的时间戳,删除该文件,然后为此FTPHost
实例调整服务器和客户端之间的时间偏移
如果您在服务器上没有写访问权限,您仍然可以使用FTPHost“手动”设置偏移量。set\u time\u shift(time\u shift)
,其中time\u shift
定义为“服务器时间-客户端时间(秒)”
请参阅“时区校正”部分。服务器时钟混乱,您应该同步它。