【发布时间】:2019-10-20 08:06:03
【问题描述】:
我有这个日期/时间值(带时区):
2019-10-22T17:00:00+02:00
现在我想检查一下,这个日期是哪个工作日(例如:星期一) 如果这个日期在 16:00 点和日期时间之间相差 1 小时。
如何检查这两个因素作为最佳实践?
【问题讨论】:
我有这个日期/时间值(带时区):
2019-10-22T17:00:00+02:00
现在我想检查一下,这个日期是哪个工作日(例如:星期一) 如果这个日期在 16:00 点和日期时间之间相差 1 小时。
如何检查这两个因素作为最佳实践?
【问题讨论】:
您可以使用DateTimeImmutable's constructor 解析日期字符串,使用DateTime#format 格式化/检索工作日,并使用DateTime#diff 获取差异:
$date_string = '2019-10-22T17:00:00+02:00';
$date = new \DateTimeImmutable($date_string);
$date_at_16 = $date->setTime(16, 0);
echo $date->format('l'), PHP_EOL;
echo $date->diff($date_at_16)->h;
请注意:
DateTimeImmutable,它和DateTime一样,只是不能修改,所以setTime也不会修改初始日期,'N' 来检索星期几,因为它是数字的,因此更适合存储/比较(我在这个小演示中使用了'l',以获得全名),DateInterval#invert 标志(日期间隔是 DateTime#diff 返回的内容)。【讨论】: