Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/310.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 上次文件修改时间返回自DST更改后一年的偏移量_Python_Datetime_Dst_Datetimeoffset_Ftputil - Fatal编程技术网

Python 上次文件修改时间返回自DST更改后一年的偏移量

Python 上次文件修改时间返回自DST更改后一年的偏移量,python,datetime,dst,datetimeoffset,ftputil,Python,Datetime,Dst,Datetimeoffset,Ftputil,为了获得文件的修改时间,我使用ftputil中的path.getmtime,但由于DST更改,最近创建的文件的返回值有一年的偏移量,表示新文件的上次修改时间是从去年开始的。实际上,该文件在“未来”一小时内被修改过。 原因是存储文件的操作系统在DST上运行,但脚本在非DST上运行。 总的来说,我想删除超过阈值的文件,但现在它也在删除最新的文件,因为它说它是从2018年开始的 我尝试将带有datetime.utcfromtimestamp的时间戳转换为UTC时间,但显然getmtime不会返回文件的

为了获得文件的修改时间,我使用ftputil中的
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
定义为“服务器时间-客户端时间(秒)”


请参阅“时区校正”部分。

服务器时钟混乱,您应该同步它。