PHP日期没有正确考虑AM / PM

时间:2015-06-11 11:31:12

标签: php wordpress woocommerce

我有一个基于Woocommerce和Woocommerce Bookings插件的预订系统。这意味着我基本上无法控制提供给我的数据格式。在结账过程结束时,我会收到预订的开始日期和持续时间,我需要显示结束日期。从理论上讲,这很简单。我给出的数据如下:

Array
(
[Booking Time] => 8:00 am
[Duration] => 5 hours
)

没有好的时间戳可以使用,但我认为date()可以轻松处理这样的事情。这是我用过的代码:

date ('h:ia', strtotime(($item['Booking Time'] + $item['Duration'])));

这几乎可以工作,问题是在这种情况下它输出01:00 am,显然应该是01:00 pm,所以它得到的时间是正确的,但只是不理解am / pm开关。鉴于我正在给出的数据结构,这里最好的解决方案是什么?

1 个答案:

答案 0 :(得分:1)

您必须使用date_add正确添加两次:

 $date = date_create($item['Booking Time']);
 date_add($date, date_interval_create_from_date_string($item['Duration']));
 echo date_format($date, 'h:ia');

一线解决方案:

date_format(date_add(date_create($item['Booking Time']), date_interval_create_from_date_string($item['Duration'])), 'h:ia');