合并日期和时间

Posted

技术标签:

【中文标题】合并日期和时间【英文标题】:Merge Date & Time 【发布时间】:2013-10-22 21:37:26 【问题描述】:
$combinedDT = date('Y-m-d H:i:s', strtotime('$date $time'));

日期格式 2013-10-14

时间格式 23:40:19

我在尝试存储到日期时间数据类型时得到零

【问题讨论】:

【参考方案1】:

对于那些来到这里使用 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'

【讨论】:

解决方案 2 是正确的。第一个解决方案可能会导致很多问题;) @JarekKowol 你能解释一下吗?你指的是什么问题? 第二种方案保留时区【参考方案2】:

您目前正在使用strtotime('$date $time')。用单引号括起来的变量不会被插值。如果使用单引号,php 会将其视为文字字符串,strototime() 会尝试将字符串 $date $time 转换为时间戳

它会失败,这可以解释为什么你会得到不正确的结果。

你需要使用双引号来代替:

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

【讨论】:

以上是关于合并日期和时间的主要内容,如果未能解决你的问题,请参考以下文章

使用将日期和时间合并为单个日期时间日期类型

合并日期和时间

将日期列和时间列合并到日期时间

将两个不相等的数据框与两个索引(日期时间和日期)上的部分公共元素合并

如何在 R 中表示和合并具有*日期范围*的时间序列数据帧?

R刻度数据:将日期和时间合并到一个对象中