web-dev-qa-db-ja.com

日付と時刻をマージ

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

日付形式2013-10-14

時刻形式23:40:19

日時データ型に保存しようとするとゼロが表示されます

18
CodeGuru

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

それは失敗し、それが間違った結果を得る理由を説明するでしょう。

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

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

そして、ここに来て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'
20
Wilbo Baggins