在工作日的特定时间之间进行检查

时间:2016-10-02 13:13:19

标签: php date time

如何在任何给定日期制作一个测试是否在星期四15:00到星期五16:00之间的PHP。

我将用作检查magento 1.8上是否有特定的装运方法

1 个答案:

答案 0 :(得分:0)

如果您不介意将这类事情硬编码,您可以尝试以下方法:

$is_valid =
    (date('D') === 'Thu' && date('H') >= 15) ||
    (date('D') === 'Fri' && date('H') < 16);

这是一个非常粗略的例子,但可能会给你一些如何实施的想法。如果您现在不想要它,可以使用unix时间戳作为第二个参数来播种日期函数,但它会很快变得难看。

或者,您可以通过使用内置字符串构造函数(如果您要以可由用户配置的窗口)以较低的性能成本获得更多灵活性

$string_to_check = 'now';
$string_start = 'thursday 15:00';
$string_end = 'friday 16:00';

$subject = new \DateTime($string_to_check);
$end = new \DateTimeImmutable($string_end); 
//need to calculate end first for the relative modification
$start = $end->modify(sprintf('previous %s', $string_start));

$is_valid = ($start < $subject && $subject < $end);

如果窗口在同一天开始和结束,我可以看到它不会起作用的限制,虽然这很容易修复 - 如果需要,你可以这样做。