0

在从 ftp 上的文件夹中提取的文件中回显时,我无法从时间戳中获取正确的日期。

$it = new DirectoryIterator("blahblahblah/news");
$files = array();
foreach($it as $file) {
if (!$it->isDot()) {
    $files[] = array($file->getMTime(), $file->getFilename());
}}

rsort($files);
 foreach ($files as $f) {
     $mil = $f[0];
     $seconds = $mil / 1000;
     $seconds = round($seconds);
     $theDate = date("d/m/Y", $seconds);
echo "<img src=\"images/content/social-icons/article.png\" width=\"18\" height=\"19\" alt=\"article\">" . $theDate . "-  <a  style=\"background-color:transparent;\" href=\"news/$f[1]\">" . $f[1] . "</a>";
echo "<br>";

 }

我正在按时间戳对文件进行排序,然后尝试使用文件名和文件链接来回显它们。问题是 date() 出现在 1970 年 1 月 16 日...我已将时间戳放入在线转换器中,它们是准确的,所以我很困惑。我还对时间戳进行了四舍五入,但这也无济于事。

4

1 回答 1

4

getMTim​​e返回一个 Unix 时间戳。

Unix 时间戳通常是自 Unix 纪元以来的秒数(不是毫秒数)。 见这里

所以这:$seconds = $mil / 1000;是你的错误来源。

简单地设置$seconds = $f[0],你应该很高兴。

更正的代码:

$it = new DirectoryIterator("blahblahblah/news");
$files = array();
foreach($it as $file) {
if (!$it->isDot()) {
    $files[] = array($file->getMTime(), $file->getFilename());
}}

rsort($files);
 foreach ($files as $f) {
     $seconds = $f[0];
     $seconds = round($seconds);
     $theDate = date("d/m/Y", $seconds);
echo "<img src=\"images/content/social-icons/article.png\" width=\"18\" height=\"19\" alt=\"article\">" . $theDate . "-  <a  style=\"background-color:transparent;\" href=\"news/$f[1]\">" . $f[1] . "</a>";
echo "<br>";

 }
于 2012-09-11T02:38:40.500 回答