2013-03-05 26 views
6

我有這個string對象在我的PHP陣列PHP字符串,添加12小時

「2013年3月5日00:00:00 + 00」

我想補充12小時內在PHP中的條目,然後將其保存回相同的格式的字符串

我相信這涉及到將字符串轉換爲日期對象。但我不知道的日期對象多麼聰明的,如果我需要告訴它格式化參數,或者如果它應該只是把字符串

$date = new DateTime("2013-03-05 00:00:00+00"); 
$date->add("+12 hours"); 
//then convert back to string or just assign it to a variable within the array node 

我是從這個方法或類似取回空值一個我試過

你會如何解決這個問題?

謝謝你,你的洞察力add()讚賞

回答

20

更改爲modify()add()需要一個DateInterval對象。

<?php 
$date = new DateTime("2013-03-05 00:00:00+00"); 
$date->modify("+12 hours"); 
echo $date->format("Y-m-d H:i:sO"); 

See it in action

下面是一個使用DateInterval對象的示例:

<?php 
$date = new DateTime("2013-03-05 00:00:00+00"); 
$date->add(new DateInterval('PT12H')); 
echo $date->format("Y-m-d H:i:sO"); 

See it in action

+0

如果你需要偏移量,它是'$ date-> format(「Y-m-d H:i:sO」);' – acme 2013-03-05 16:22:04

+1

好的。添加。 – 2013-03-05 16:23:15

2

改變這一行

$date->add("+12 hours"); 

$date->add(new DateInterval("PT12H")); 

這將在DateInterval constructor頁面中添加12個小時你的約會

看就知道如何建立DateInterval

+0

好吧,我看到了dateAdd參考網站http://www.php.net/manual/en/datetime.add.php上的語法,但我找不到引用告訴我P12H是什麼以及其他類型的區間,如果它在那裏,它不是很直觀。來想一想,也許它是在dateinterval頁面 – CQM 2013-03-05 16:31:42

+0

@nlsbshtr答案更新(我錯過了T) – 2013-03-05 16:36:14

1

使用此補充小時,

$date1= "2014-07-03 11:00:00"; 
$new_date= date("Y-m-d H:i:s", strtotime($date1 . " +3 hours")); 
echo $new_date; 
0

如果你有動態間隔,這種方式可以避免$ dateDiff格式錯誤:

$dateDiff = "12 hours"; 
$interval = DateInterval::createFromDateString($dateDiff); 
$date = new DateTime("2013-03-05 00:00:00+00"); 
$date->add($interval); 
echo $date->format("Y-m-d H:i:sO");