2011-07-25 16 views
0

...而不是一個時間......php:如何將日期時間減少爲每個項目的foreach ...?只有

$now = date("D, d M Y H:i:s O"); 
    foreach ($items AS $item) 
     { 

      $currentDate = strtotime($now); 
      $pastDate = $currentDate-(60*5); 
      $formatDate = date("Y-m-d H:i:s", $pastDate); 
      echo "\t\t<item>\n"; 
      echo "\t\t\t<pubDate>" . $formatDate . "</pubDate>\n" ; 

現在,我想每一個時間爲5分鐘formatDate遞減,我不想對每個元素的同時...感謝

回答

1
$currentDate = time(); 
foreach ($items as $item){ 
    $formatDate = date("Y-m-d H:i:s", $currentDate); 
    echo "\t\t<item>\n"; 
    echo "\t\t\t<pubDate>" . $formatDate . "</pubDate>\n" ; 
    $currentDate = strtotime('-5 minutes', $currentDate); 
} 
+1

它的工作原理,謝謝 – smepie

1

如果您使用PHP 5.3,則應檢查DateTime。它允許您在特定的時間創建一個對象,並且它有一個可用於減少時間的方法sub()

0
$now = time(); 
foreach ($items AS $item) 
    { 
     echo "\t\t<item>\n"; 
     echo "\t\t\t<pubDate>" . date("Y-m-d H:i:s", $now) . "</pubDate>\n" ; 
     echo "\t\t</item>\n"; 
     $now -= (60*5); 
    } 
2

你原來的減法(60 * 5)的想法是完全正確的;你只需要保持從工作值減去它,而不是反覆地從原始值減去按您的代碼:

$looptime = time(); 
foreach ($items AS $item) { 
    $looptime -= (60*5); 
    $formatDate = date("Y-m-d H:i:s", $looptime); 
    echo "\t\t<item>\n"; 
    echo "\t\t\t<pubDate>" . $formatDate . "</pubDate>\n" ; 
} 
+0

我覺得人都是這樣着如何「神奇」的strtotime陶醉()是,他們只是想一遍又一遍地使用它... –

+0

@Mark B - 是的,這是離奇的。 'strtotime()'是一個可怕的函數;應儘可能少使用。幸運的是,我注意到所有推薦它的人現在都改變了主意或刪除了答案,所以我從答案中刪除了這個評論。 – Spudley

+0

eheheh但爲什麼它可怕? – smepie

相關問題