2012-09-11 69 views
0

我無法從我的時間戳中獲取正確的日期,同時從正在從ftp上的文件夾中拉出的文件回顯出來。將時間戳記轉換爲日期在php中提供錯誤的日期

$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>"; 

} 

我按時間戳對文件進行排序,然後試圖用文件名和文件鏈接將它們回顯出來。 問題是,日期()出來1970年1月16日...我把時間戳放到一個在線轉換器,他們是準確的,所以我很困惑。 我也舍入了時間戳,但這也沒有幫助。

回答

3

getMTime返回Unix時間戳。

Unix時間戳通常是自Unix紀元以來的秒數(不是毫秒數)。 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>"; 

} 
+0

冠軍!非常感謝! – user482024