2015-08-21 92 views
12

我有一個奇怪的問題。當我做記錄時,它不考慮原始日期的小時部分,並且它總是在午夜返回。我試圖研究,但我找不到任何具體的東西。PHP strtotime總是午夜返回

有什麼我失蹤了嗎?

$original_date = "2015-08-07 02:00:00"; 
$next_date = date('Y-m-d H:i:s', strtotime("monday this Week +1 week", strtotime($original_date))); 

它返回$next_date2015-08-14 00:00:00

+1

我不知道如何糾正它,但是給'strtotime'像週一的某一天它設置爲週一00:00:00,然後其他的計算使用。 – AbraCadaver

回答

5

試試這個,添加要在接下來的檢索時間日期,。

$original_date = "2015-08-07 02:00:00"; 
echo $next_date = date('Y-m-d H:i:s', strtotime("monday this Week 02:00:00 +1 week", strtotime($original_date))); 
+0

,它只會在日期內加上日期,並且在午夜加00:00:00,所以我們剛剛在時間上增加了時間。 –

+0

這個工程!你會建議總是把小時作爲安全毯嗎? – Kitara

+0

@Kitara是的,你應該隨時添加它,當你想保留你的小時,分​​鍾和秒。 –

3

monday this week +1 week假設你正在尋找的時間過去了一週的星期一午夜。如果你想保留時間的小時部分,那麼你可以把它添加到您的date格式,因爲它應始終是相同$original_date

date('Y-m-d ' . date('H:i:s', strtotime($original_date)), strtotime("monday this Week +1 week", strtotime($original_date))); 
+0

嗨,它不適合我輸出是2015-08-10 19:33:35。我修改日期('Y-m-d',strtotime(「本週星期一+1星期」,strtotime($ original_date)))。' '.date('H:i:s',strtotime($ original_date)),它工作。 – Kitara

+0

@Kitara也可以工作,我實際上在本週的星期一說這個星期一時會錯過'strtotime'調用 – FuzzyTree

3

當您使用mondaystrtotime你重新把時間還給00:00:00。您必須明確地在datestrtotime中傳遞時間以獲得所需的行爲。有關類似問題,請參閱this same question

$next_date = date('Y-m-d H:i:s', strtotime("monday this Week +1 week " . date('H:i:s', strtotime($original_date)), strtotime($original_date))) 
3
$date = strtotime('2018-08-14 02:00:00'); 
$next_date = date('Y-m-d H:i:s', strtotime("monday this Week 02:00:00 +1 week", $date)); // 2018-08-20 02:00:00