PHP函数filemtime返回负值或非常大的值

aks*_*hat 11 php filemtime

我正在创建一个WordPress插件,可以在某些服务器上看到,对于某些文件,stat(或filemtime)返回无效的mtime值.在某些情况下,它是负值或非常大的值(超过30亿).

在FTP中,我可以看到时间戳是正确的.

Bab*_*aba 11

当您在任何PHP时间戳中获得负数时,它只是Unix Epoch之前的秒数,而且不限于此 filemtime

例A

echo strtotime("1950-1-1"); // Outputs  -631155600
                                        ^------- negative value
Run Code Online (Sandbox Code Playgroud)

例B

输出负值并不意味着如果您尝试,则无法正确格式化

echo date("Y-m-d",-631155600); // Output  1950-01-01
Run Code Online (Sandbox Code Playgroud)

最后

FTP I can see that the timestamp is correct though

您的FTP应用程序绝对不是PHP并且有自己的内部日期系统..其日期系统可能不会在时间戳中使用负值


use*_*tbd 0

如果我理解正确的话,您正在寻找一个非常大的值 - 这是一个 Unix 时间戳。

你尝试过这样的事情吗?

date ("F d Y H:i:s.", filemtime($filename))
Run Code Online (Sandbox Code Playgroud)

filemtime返回自 1970 年 1 月 1 日以来经过的秒数,这确实应该是一个非常大的值;您可以使用类似上面示例的内容将这些秒数转换为人类可读的内容。

另一方面,如果您意识到这一点并且您认为您的大值仍然是错误的,那么发布所述值的示例以及您期望的日期可能会有所帮助。