我正在尝试将日期更改为服务器时间并更正其时间。我找不到\ DateTime :: setTime之后不希望更改日期的原因。
$now = new \DateTime();
$nextFriday = new \DateTime('@' . strtotime('next friday', $now->getTimestamp()));
我知道了:2019-03-21 23:00:00.0 +00:00
$nextFriday->setTime(12, 30);
我知道了:2019-03-21 12:30:00.0 +00:00
$nextNextFriday = new \DateTime('@' . strtotime('next friday', $nextFriday->getTimestamp()));
现在,发生了什么事情
2019-03-21 23:00:00.0 +00:00
答案 0 :(得分:4)
我相信要重置时间的原因是,相对的PHP日期修饰符'next ...'
总是将时间重置为实际上是“下一个……的开始”。
为什么获得23:00:00+00:00
可能是由于服务器与系统上设置的时区不同(假设本地开发)。
如果您需要相对日期,请使用:
<?php
$now = new \DateTime();
$nextFriday = clone $now;
$nextFriday->modify('next friday');
// also here time will be 00:00:00
$nextFriday->setTime(12,30);
var_dump($nextFriday);
// "2019-03-22 12:30:00.000000"