2013-10-15 13 views
7
$combinedDT = date('Y-m-d H:i:s', strtotime('$date $time')); 

日付形式 2013年10月14日マージ日時

時間形式 午前23時40分19秒

datetimeデータ型

答えて

21
に保存しようとしたとき、私はゼロを取得しています

あなたは現在strtotime('$date $time')をやっています。一重引用符で囲まれた変数は、補間されません。一重引用符を使用すると、PHPはそれをリテラル文字列として扱い、strototime()は文字列$date $timeをタイムスタンプに変換しようとします。

これは失敗し、なぜあなたは間違った結果を得ているのかを説明します。

あなたが代わりに二重引用符を使用する必要があります。

$combinedDT = date('Y-m-d H:i:s', strtotime("$date $time")); 
              ^  ^
14

そしてDateTimeオブジェクトでの作業ここでお越しの方のために:

$date = new DateTime('2017-03-14'); 
$time = new DateTime('13:37:42'); 

// Solution 1, merge objects to new object: 
$merge = new DateTime($date->format('Y-m-d') .' ' .$time->format('H:i:s')); 
echo $merge->format('Y-m-d H:i:s'); // Outputs '2017-03-14 13:37:42' 

// Solution 2, update date object with time object: 
$date->setTime($time->format('H'), $time->format('i'), $time->format('s')); 
echo $date->format('Y-m-d H:i:s'); // Outputs '2017-03-14 13:37:42'