2015-11-06 120 views
-1

我在這裏有一個簡單的代碼,將DateTime格式轉換爲Y-m-d。這裏是我的代碼:DateTime函數來foreach

$var = '2015-11-06'; 

$images = $db->query("SELECT * FROM images"); 

foreach ($images as $i) { 
    $created_at = $i['created_at']; 
} 

$date = new DateTime($created_at); 
$newDate = $formattedDate->format('Y-m-d'); 

我的數據庫中日期的格式像這樣(2015-11-06 03:07:15)。

我想要做的是讓所有的$newDate等於$var的價值和使用foreach呼應了所有相同的值。我怎麼可能做到這一點?

+1

不知道你想做什麼。 '$ newDate'不是一個數組,它只是一個日期。 – Barmar

+0

由於您在循環外調用'new DateTime($ created_at)',因此您只是使用最後一幅圖像的創建時間。你可以直接寫'$ created_at = $ images [count($ images)-1] ['created_at'];'。 – Barmar

+1

您的日期格式永遠不會等於'$ var',因爲您使用'-'分隔符格式化,但'$ var'具有'/'分隔符。 – Barmar

回答

1

我不是很確定你在問什麼,但也許就是這樣。你必須在循環內進行格式化。

foreach ($images as $i) { 
    $date = new DateTime($i['created_at']); 
    $dateFormatted = $date->format('Y-m-d'); 
    if ($dateFormatted == $var) { 
     echo $dateFormatted; 
    } 
} 

你也可以做它在數據庫中查詢:

$images = $db->query("SELECT * FROM images 
        WHERE created_at BETWEEN '$var 00:00:00' AND '$var 23:59:59'"); 
+0

夥計,這個把戲很有效。謝謝! – FewFlyBy

+0

這不是一個竅門,它只是一個你想要的代碼的簡單翻譯。 – Barmar

-1

使用strtotime將日期轉換爲unix時間戳並進行比較。