0

如果不是工作日,我想显示错误(您可以在 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');
}
4

3 回答 3

1

您可以调用date('w', $date)wherew将结果设置为星期几的数字表示,其中 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');
}
于 2017-03-22T09:27:59.853 回答
0

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

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

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

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

于 2017-03-22T09:27:33.537 回答
0

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

$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');
}
于 2017-03-22T09:59:58.853 回答