为什么我在1969年12月31日使用php中的filemtime作为我上次修改的文件名?

时间:2009-12-05 21:44:33

标签: php datetime function

我是php的新手,所以请不要介意我问这个问题,但我真的很困惑为什么filemtime(filename.txt)给我的1969年12月31日作为我上次修改时间?

5 个答案:

答案 0 :(得分:8)

这可能意味着找不到您的文件:

  • 因为它不存在
  • 或因为它不在当前目录中
  • 或者因为你没引用它的名字 - 你没有^^
1970年1月1日是时间“零”的日期;当出现问题时,filemtime会返回false

所以,1969年12月31日的零日期/时间......根据你所在的地区,我想;我自己,用这段代码:

$filemtime = filemtime(filename.txt);
$formated = date('Y-m-d H:i:s', $filemtime);
var_dump($filemtime, $formated);

得到这个输出:

boolean false
string '1970-01-01 01:00:00' (length=19)

false,因为文件不存在,而1970-01-01位于01:00,因为我的语言环境(我在法国,UTC + 1小时)


请注意,我还会收到一些通知和警告:

  • Notice: Use of undefined constant filename - assumed 'filename'
  • Notice: Use of undefined constant txt - assumed 'txt'
  • Warning: filemtime() [function.filemtime]: stat failed for filenametxt
你有这些吗?
如果否:error_reporting和/或display_errors已启用?

答案 1 :(得分:2)

我遇到了同样的问题并通过将$filename之前的完整物理路径作为文件最后修改日期filemtime($physical_path.$filename)和文件大小filesize($physical_path.$file)连接起来,使文件路径绝对,从而解决了这个问题。

答案 2 :(得分:1)

1970年1月1日0:00是Unix纪元的开始。因此,时间戳为0,这是文件时间操作失败的结果,以及(可能)DST问题,是1969年12月31日。例如,您需要修复filemtime操作(如果您的示例不仅仅是伪-code)通过在文件名中添加引号:

filemtime ("filename.txt");

答案 3 :(得分:0)

如果filemtime找不到该文件,则会收到此信息。

答案 4 :(得分:0)

你不能使用

$t = filemtime(filename.txt);

至少使用类似

的内容
$t = filemtime("filename.txt");