我有这个日期/时间值(带时区):
2019-10-22T17:00:00+02:00
现在,我想检查一下这个日期是哪个工作日(例如:星期一) 并且该日期与16:00之间的日期相差1h。
如何将这两个因素作为最佳实践?
答案 0 :(得分:0)
您可以使用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
返回的日期)。