【问题标题】:Filter Working days from weekend php从周末php过滤工作日
【发布时间】:2017-08-14 07:11:09
【问题描述】:

如果不是工作日,我想显示一个错误(您可以在 html 部分输入日期)

setlocale(LC_TIME, "de_DE.utf8");
$dateString = strftime('%A' , $dateTimestamp1);
substr($dateString, 0, 2);
if ($dateString == 'So' || $dateString == 'Sa') {
    throw new FormInputException('date', 'Invalid Date');
}

【问题讨论】:

    标签: php date filter weekday weekend


    【解决方案1】:

    您可以调用date('w', $date) 其中w 将结果设置为星期几的数字表示,其中0 代表星期日,1 是星期一... 6 是星期六等。因此,使用简单的自定义函数,您可以确定日期是否在工作日:

    function dateIsWeekday($date) {
        $day = date('w', $date);
        return $day > 0 && $day < 6;
    }
    

    你可以打电话:

    if (!dateIsWeekday($dateTimestamp1)) {
        throw new FormInputException('date', 'Date is not a weekday');
    }
    

    【讨论】:

    • 很高兴听到!如果有帮助,您能否将答案标记为正确。
    【解决方案2】:

    您没有明确说明您的问题是什么,因为您使用的方法基本上是可以的。不过有几点需要注意:

    1. 更简单的方法 PHP 已经为您提供了检查周末的方法(取决于您的 PHP 版本)。看看这个已经有答案的问题:Weekend in PHP

    2. 使用 substr 这实际上是不必要的。 $dateString = strftime('%a' , $dateTimestamp1); 已经为您提供了缩写字符串(小 %a)。

    3. 使用 LC_TIME 一个问题可能是您的时间实际上并未翻译成德语。这取决于您使用的语言包 (de-DE.utf8) 是否安装在您的服务器上。实际上,使用 PHP 的主要方法进行周末检查,您甚至不需要关心这样的事情(参见 1.)。

    【讨论】:

      【解决方案3】:

      如果其他人遇到了我解决的问题 - 这是代码

      $dateTimestamp1 = strtotime($this->date);
      
      //setlocale(LC_TIME, "de_DE.utf8");
      $day = date('N', $dateTimestamp1);
      if ($day == 6 || $day == 7) {
          throw new FormInputException('date', 'Invalid Date');
      }
      

      【讨论】:

      • 请注意,'N' 参数仅适用于 PHP 5.1.0
      猜你喜欢
      • 1970-01-01
      • 2014-10-09
      • 1970-01-01
      • 2018-12-31
      • 2019-07-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-11-03
      相关资源
      最近更新 更多