检查日期和日期的不同时间

时间:2019-10-20 08:06:03

标签: php date time

我有这个日期/时间值(带时区):

2019-10-22T17:00:00+02:00

现在,我想检查一下这个日期是哪个工作日(例如:星期一) 并且该日期与16:00之间的日期相差1h。

如何将这两个因素作为最佳实践?

1 个答案:

答案 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;

演示:https://3v4l.org/R7e9n

请注意:

  • 我使用过DateTimeImmutable,它与DateTime一样,但是无法修改,因此setTime也不修改初始日期,
  • 您应该捕获其构造函数的潜在抛出异常(如果格式无效)
  • 最好使用'N'来检索星期几,因为它是数字,因此更适合存储/比较(出于这个小小的演示目的,我使用'l' ,以获得全名),
  • 如果您需要知道是在16点钟之前还是之后的1个小时,可以检查DateInterval#invert标志(日期间隔是DateTime#diff返回的日期)。