Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/272.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
为什么我在php中使用filemtime得到1969年12月31日作为我最后一次修改的文件名?_Php_Datetime_Function - Fatal编程技术网

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

为什么我在php中使用filemtime得到1969年12月31日作为我最后一次修改的文件名?,php,datetime,function,Php,Datetime,Function,我是php新手,所以请不要介意我问这个问题,但我真的很困惑为什么filemtime(filename.txt)给我的最后修改时间是1969年12月31日?1970年1月1日0:00是Unix时代的开始。因此,时间戳0是1969年12月31日,它是失败的filemtime操作以及(可能)DST问题的结果。例如,您需要通过在文件名中添加引号来修复filemtime操作(如果您的示例不仅仅是伪代码): filemtime ("filename.txt"); 这可能意味着找不到您的文件: 因为它不存

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

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

filemtime ("filename.txt");

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

  • 因为它不存在
  • 或者因为它不在currect目录中
  • 或者因为你没有引用它的名字,你没有^^
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小时)


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

  • 注意:使用未定义的常量文件名-假定为“filename”
  • 注意:使用未定义的常量txt-假定为“txt”
  • 警告:filemtime()
你有这些吗?

如果否:是否启用了
error\u reporting
和/或
display\u errors
功能?

如果filemtime找不到该文件,您将收到此信息

您不能使用

$t = filemtime(filename.txt);
至少,使用类似

$t = filemtime("filename.txt");

我也遇到了同样的问题,通过将
$filename
之前的完整物理路径与
filemtime($physical\u path.$filename)
之前的文件上次修改日期和
filesize($physical\u path.$file)
之前的文件大小连接起来,使文件路径成为绝对路径,从而解决了这个问题

它实际上是一个返回值
-1
,因此它出现在1969年。不,这也是我第一次想到的,但是filemtime()在失败时返回false(=0)。解释一定与夏令时有关。夏令时在1969年底,根据您所在时区与UTC之间的小时数和分钟数进行调整,因为filemtime转换为本地时区。@Pascal:谢谢Pascal提供详细的答案。我收到警告,提到文件名的stat失败,并且我的错误报告已启用。我不确定为什么filemtime没有获得我的文件,就像我回显文件一样,但我获得了文件名,但修改时间错误,截止到12月31日,我仍然想知道为什么会这样。