我的日期和时间是分开的,所以我将它们组合在一起
$mergeDateTime = new DateTime($date.' '.$time);
$currentDateTime = $mergeDateTime->format('d-m-Y H:i A);
我正在尝试将5 hours
减去它,例如今天的日期为08-02-2018 04:00 AM
,当它被减去时应为07-02-2018 11:00 PM
我尝试的是$newDate = date('d-m-Y H:i A', strtotime($currentDateTime)- (5 * 3600));
但它返回的结果与我期望的结果不同。 提前感谢您的帮助!
更新
我认为已经没事了
我尝试了这段代码date('d-m-Y H:i A', strtotime($mergeDateTime->format('d-m-Y H:i A')) - 60 * 60 * 5);
但是在测试它时,例如11-02-2018
10:30 PM
它应该是05:30 PM
,但日期相同,但我收到31-12-1969 20:00 PM
看起来如果结果是在相同的日期,它会像那样返回。
答案 0 :(得分:0)
我找到了this link
的解决方案我试过这个
date('d-m-Y H:i A', strtotime($mergeDateTime->format('d-m-Y H:i A')) - 60 * 60 * 5);
** 更新
关于我的问题,如果他们的日期相同,那么我的合并日期和时间始终为12 hours format
而不是24 hours
,因此我将H
设为h
现在它工作正常
答案 1 :(得分:0)
您可以查看DateTime::sub()方法,同时确保设置正确的时区。
要说清楚,你想要做这样的事情:
$tz = new DateTimeZone('America/Los_Angeles'); // See: http://php.net/manual/en/timezones.php
$dt = new DateTime('now', $tz);
$di = new DateInterval('P5H'); // See DateInterval documentation for interval_spec given here
$currentDateTime = $dt->format('d-m-Y H:i A');
$dt->sub($di); // You can't use the return value here, since this modified the $dt object and returns it for chaining
$previousDateTime = $dt->format('d-m-Y H:i A'); // This now contains the new time
答案 2 :(得分:0)
有很多方法,一些答案可能会得到相同的结果....
继承人我的1美分..
$currentDateTime = $mergeDateTime->format('d-m-Y H:i:s);
$currentDate = date('d-m-Y', strtotime($currentDateTime));
$currentTime = date('H:i:s', strtotime($currentDateTime));
$hour_5 = '05:00:00';
$a = new DateTime($currentTime);
$b = new DateTime($hour_5);
$diff = $a->diff($b);
$updated_date = $diff->format("%H:%i:%s");
$new_date_time = $currentDate.' '.$updated_date;
我还没有对它进行过测试,但是应该给你一个想法......希望这有效