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

日期格式 2013年10月14日合并日期和时间

时间格式 23时40分十九秒

试图存储到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'