2013-01-24 39 views
4

假設我有以下日期/日期時間。我怎樣才能最好地告訴哪些人在午夜(即時間是00:00:00)?第一個不應該是午夜,但接下來的三個應該是。由於Tell是PHP的DateTime是午夜

$d1=new DateTime('12/10/2012 05:33'); 
$d2=new DateTime('12/10/2012'); 
$d3=new DateTime('12/10/2012 00:00'); 
$d4=new DateTime('12/10/2012 00:00:00'); 

回答

11

檢查小時和分鐘都爲零:

if($date->format('H') == 0 && $date->format('i') == 0) { 
    echo "Midnight!"; 
} 
+0

感謝nickb。我也想要第二個,但這顯然是你的解決方案。它可以(而且應該)一次完成所有的東西,像$ date-> format('H i s')=='00 00 00'? – user1032531

+0

或者是否有某種只返回時間部分的getTime()方法,如果零是午夜? – user1032531

+2

不,沒有什麼像getTime():http://php.net/manual/en/class.datetime.php –

0

你可以用正則表達式或類型轉換檢查相關部件是否只包含0:

$string = $dateTime->format('Hisu'); 

    $isMidnight = preg_match('/^0+$/usD', $string); 
    $isMidnight = !(int) $string; 

你可以用格式設定粒度,所以

  • Hisu精確到微秒,
  • His精確到秒,
  • Hi精確到分鐘,
  • H精確到小時。
0

您必須指定時區,並使用日期時間

$test = new DateTime('NOW', new DateTimeZone('Asia/Kolkata')); 
$h=$test->format('H'); 
$m=$test->format('i'); 
$s=$test->format('s'); 
if($h == 0 && $m==0 && $s == 0) { 
    echo "Midnight!"; 
}