2017-03-22 72 views
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'); 
} 

回答

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'); 
} 
+0

THX我有以後去解決它:) – Smuka

+0

大聽到同樣的方法!如果有幫助,你可以請標記答案是正確的。 –

0

你沒有明確說明你的問題是什麼,因爲你使用的方法基本上沒問題。但也有幾件事情要記住:

  1. 更簡單的方法 PHP已經給你的工具來檢查週末(取決於您的PHP版本)。看看這個問題已經有了答案:Weekend in PHP

  2. 使用substr 這實際上是不必要的。 $dateString = strftime('%a' , $dateTimestamp1);已經給你縮寫字符串(小%a)。

  3. 使用LC_TIME 一個isuse可能是您的時間並未實際轉換爲德語。這取決於您使用的語言包(de-DE.utf8)是否安裝在您的服務器上。實際上使用PHP的主要方法來進行週末檢查,你甚至不需要關心這樣的事情(見1)。

+0

THX的意見,我會記住它下一次:) – Smuka

0

如果任何人有我固定它 - 這裏的問題是個E碼

$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'); 
} 
+0

請注意,'N'參數僅適用於PHP 5.1.0 –