2017-03-22 4 views
0

ich einen Fehler angezeigt werden soll, wenn es nicht ein Wochentag ist (Sie können ein Datum in dem HTML-Abschnitt eingeben)Filter Arbeitstag von Wochenende php

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

Antwort

1

Sie können date('w', $date) nennen, wo w wird das Ergebnis in der numerischen Darstellung des Tages der Woche festgelegt, wobei 0 Sonntag darstellt, 1 Montag ist ... 6 ist Samstag usw. Daher kann mit einem einfachen benutzerdefinierten Funktion, die Sie wenn ein Datum fällt auf einen Wochentag bestimmen kann:

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

Sie können auch anrufen:

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

thx halten hatte ich den gleichen Ansatz es später zu lösen :) – Smuka

+0

Großen zu hören! Können Sie bitte die Antwort als richtig markieren, wenn es geholfen hat? –

0

Sie nicht klar waren angeben, was dein Problem ist, weil die Ansatz, den Sie verwenden, ist grundsätzlich in Ordnung. Allerdings gibt es ein paar Dinge im Auge zu behalten:

  1. Ein einfachere Art und Weise PHP bereits gibt Ihnen die Mittel für das Wochenende zu überprüfen (je nach Version von PHP). Überprüfen Sie diese Frage, die bereits die Antwort hat: Weekend in PHP

  2. Verwenden von substr Dies ist eigentlich unnötig. $dateString = strftime('%a' , $dateTimestamp1); gibt Ihnen bereits die abgekürzte Zeichenfolge (klein% a).

  3. Verwenden von LC_TIME Eine Isuse könnte sein, dass Ihre Zeit nicht wirklich ins Deutsche übersetzt ist. Dies hängt davon ab, ob das von Ihnen verwendete Sprachpaket (de-DE.utf8) auf Ihrem Server installiert ist oder nicht. Wenn Sie PHPs Hauptmethoden für Wochenend-Checks verwenden, sollten Sie sich nicht einmal um solche Dinge kümmern (siehe 1.).

+0

thx für den Rat, den ich es im Sinn für das nächste Mal :) – Smuka

0

wenn jemand anderes das Problem bekam ich it- hier festgelegt ist th e Code

$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

Beachten Sie, dass der 'N' Parameter nur von PHP 5.1.0 verfügbar ist –