我无法从我的时间戳中获取正确的日期,同时从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日......我已经将时间戳放入在线转换器并且它们是准确的,所以我很困惑。 我也对时间戳进行了舍入,但这也无济于事。
答案 0 :(得分:3)
getMTime返回Unix时间戳。
Unix时间戳通常是自Unix Epoch以来的秒数(不是毫秒数)。 See here
所以:$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>";
}