2011-06-01 111 views
3

我想用PHP獲取特定日期和時間的日期,就像我想要的第二天的日期和時間上午9.30即「2011-06-02 09:30 :00" 。 我使用得做到這一點的代碼,如何獲得下一個具體時間在PHP的日期

<?php 
    $next_day_date = date("Y")."-".date("m")."-".(date("d")+1)." 09:30:00"; 
    $new_trig_time_stamp = strtotime($next_day_date); 
    $trigger_date_time = date("Y-m-d H:i:s",$new_trig_time_stamp); 
    echo $trigger_date_time; 
?> 

上面的代碼工作正常,但未能在第31天,在31日返回「1970-01-01五時三十分00秒」。 有沒有其他的方法可以做到這一點。

回答

5

當固定數量的轉移日期,最好使用mktime(),因爲它處理無效的日期以及(例如,它知道,1月32日其實是在2月1日)

$trigger_date_time = date("Y-m-d H:i:s", mktime(9,30,0, date('n'), date('j')+1, date('Y')); 
1

通過unix時間戳計算它 - 更不用說煩惱

<?php 
    $trigger_date_time = date("Y-m-d 09:30:00",time() + 60*60*24); 
    echo $trigger_date_time; 
?> 
+0

耶它甚至在5月31日試過。它的工作......謝謝! strtotime()在我的情況下造成了問題。 – 2011-06-01 11:11:01

+0

如果由於DST而導致時鐘發生移位(一年一次,太晚1小時,一小時到早),此手動第二次調整的解決方案將失敗。 – mkilmanas 2011-06-01 11:33:40

+0

如果解決方案的精度以天爲單位,小時無關緊要 – SergeS 2011-06-01 11:35:59

0

看一看date_add

更詳細,類似...

$myDate = new DateTime("Some time"); 
$myDate->add(new DateInterval("P1D")); 

然後可以使用$myDate->format(…)提取格式化表示。

1

strtotime()在這裏非常有用。

$trigger_date_time = date("Y-m-d H:i:s", strtotime("tomorrow 9:30")); 
+0

感謝這也工作得很好。 – 2011-06-01 11:50:29

0
echo date('Y-m-d', strtotime('+1 day')) . ' 09:30:30'; 
+0

如果我不得不猜測,我會說這是因爲代碼沒有提供任何解釋。 – 2011-06-02 03:35:34

+0

爲什麼其他人得到低價? (我認爲每個人都在同一時間) – binaryLV 2011-06-02 06:23:39