DateTime ::修改设置日期但不修改时间

时间:2014-03-20 18:46:15

标签: php datetime

我正在使用以下内容创建一个可以使用的日期。我希望日期跳到下周二并保留最初存储在 $ start 中的时间。目前它只是跳到下周二的日期,但它没有节省时间。时间重置为午夜。

$day="Tuesday";
$start=DateTime::createFromFormat('Y-m-d H:i:s', $start);
$firstOccurrence= $start->getTimestamp();
$nextOccurence=$start->modify("next $day"); 

1 个答案:

答案 0 :(得分:0)

您需要从原始对象传输时间。另外,我建议使用克隆来避免副作用: -

$start = '2014-03-20 18:23:15';
$day="Tuesday";
$start=DateTime::createFromFormat('Y-m-d H:i:s', $start);
$nextOccurence = clone $start;
$nextOccurence->modify("next $day")->setTime((int)$start->format('H'), (int)$start->format('i'), (int)$start->format('s'));
var_dump($nextOccurence);

See it working