【问题标题】:PHP date not taking into account AM/PM properlyPHP 日期未正确考虑 AM/PM
【发布时间】:2015-06-11 11:31:11
【问题描述】:

我有一个基于 Woocommerce 和 Woocommerce Bookings 插件的预订系统。这意味着基本上我无法控制给我的数据格式。在结帐过程结束时,我得到了预订的开始日期和持续时间,我需要显示结束日期。从理论上讲,这非常简单。我得到的数据是这样的:

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

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

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

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

【问题讨论】:

  • 尝试strtotime() 独立预订时间和时长。或者,您可以 strtotime() 预订时间,附加日期(例如,例如 2015 年 1 月 20 日上午 8:00),然后通过将小时乘以 60 或其他值来计算持续时间(如果您有天数,则乘以 24首先,你明白了)。

标签: php wordpress woocommerce


【解决方案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');

【讨论】:

  • 完美运行,不知道该功能,非常感谢您的回答和启发:)
猜你喜欢
  • 2012-02-18
  • 2022-10-04
  • 2022-07-18
  • 1970-01-01
  • 2014-03-17
  • 2018-12-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多