2013-03-05 9 views
6

私はPHPの配列にこのstringオブジェクトを持ってPHPの文字列、12時間

追加し、私は12を追加したいと思います "2013年3月5日00:00 + 00:00"

を時間を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 

を文字列を取ることになっている場合、私は、このメソッドから空の値を取り戻すまたは類似している場合私が試したもの

どうすればこの問題を解決できますか?

おかげで、あなたの洞察力はmodify()に変更add()

答えて

20

を高く評価しています。 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

+1

ニースキャッチ。追加されました。 –

2

変更し、この行は

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

これとのは、DateInterval文字列に時間を追加するには、この

+0

大丈夫、私はdateAdd参照サイトhttp://www.php.net/manual/en/datetime.add.phpでその構文を見ましたが、P12Hの内容と他の種類の間隔を教えてくれるリファレンスが見つかりませんでした。それがあればそれは直感的ではありませんでした。それを考えに来て、多分それは日付間隔のページにあります – CQM

+0

@nlsbshtr答えが更新されました(私はTを逃しました) –

1

使用を構築する方法を知ってDateInterval constructorページであなたの日付に

ルックを12時間を追加します

$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"); 
関連する問題