我有一个基于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开关。鉴于我正在给出的数据结构,这里最好的解决方案是什么?
答案 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');