2012-09-08 55 views
0

不知道爲什麼,但我不能得到一個PHP函數來顯示某個文件已提交的時間。前;大約1年前或大約2秒前。但在我的情況下,即使文件已在幾秒前提交,它仍停留在「大約1天前」。php函數沒有返回正確的文件日期

這裏是一個應該得到的時間,因爲提交

function time_since($since) { 
    $chunks = array(
     array(60 * 60 * 24 * 365 , 'year'), 
     array(60 * 60 * 24 * 30 , 'month'), 
     array(60 * 60 * 24 * 7, 'week'), 
     array(60 * 60 * 24 , 'day'), 
     array(60 * 60 , 'hour'), 
     array(60 , 'minute'), 
     array(1 , 'second') 
    ); 

    for ($i = 0, $j = count($chunks); $i < $j; $i++) { 
     $seconds = $chunks[$i][0]; 
     $name = $chunks[$i][1]; 
     if (($count = floor($since/$seconds)) != 0) { 
      break; 
     } 
    } 

    $print = ($count == 1) ? '1 '.$name : "$count {$name}s"; 
    return $print; 
} 

的功能,這裏是它使用上述功能並注入所有的信息到JSON

$dh = opendir($dir); 
$files = array(); 
while (($file = readdir($dh)) !== false) { 
    if ($file != '.' AND $file != '..') { 
     if (filetype($dir . $file) == 'file') { 
      $files[] = array(
       'id' => $domain.$dir.$file."?".Salt($file), 
       'name' => $file, 
       'size' => filesize($dir . $file). ' bytes', 
       'date' => time_since(date("ymd Hi", filemtime($dir . $file))), 
       'path' => $domain.$dir.$file, 
       'thumb' => $domain.$dir."thumbnails/".$file 
       #'thumb' => $dir . 'thumbs/' . $file 
      ); 
     }    
    } 
} 
closedir($dh); 

    $json = json_encode($files); 

    $callback = $_GET['callback']; 
    echo $callback.'('. $json . ')'; 

回答

3

你試圖通過時間戳代碼而不是您的功能的字符串:

'date' => time_since(time() - filemtime($dir . $file)), 
+0

它在42年前給予米。 –

+0

現在呢?編輯我的答案。 –

+0

完美的作品:)非常感謝你 –

1

您應該將您的日期轉換爲在計算之前,先計算unix時間戳。

  'date' => time_since(date("ymd Hi", filemtime($dir . $file))), 

應該是:

  'date' => time_since(strtotime(date("Y-m-d H:i:00", filemtime($dir . $file)))), 

更新:

@Arthur豪邁只是給了正確的答案:filemtime返回一個時間戳!

  'date' => time_since(time() - filemtime($dir . $file)), 

應該工作。

+0

它成爲42年前:) –