【问题标题】:Check day and difference time of a date检查日期的日期和时间差
【发布时间】:2019-10-20 08:06:03
【问题描述】:

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

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

现在我想检查一下,这个日期是哪个工作日(例如:星期一) 如果这个日期在 16:00 点和日期时间之间相差 1 小时。

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

【问题讨论】:

    标签: php date time


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

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

    请注意:

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

    【讨论】:

    • 非常感谢!! :)
    猜你喜欢
    • 2023-03-26
    • 2017-12-15
    • 2021-02-12
    • 1970-01-01
    • 2012-05-27
    • 2022-01-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多