2017-03-22 5 views
0

Je veux montrer une erreur si ce n'est pas un jour de la semaine (vous pouvez entrer une date dans la section html)Filtre de travail jours de week-end 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'); 
} 

Répondre

1

Vous pouvez appeler date('w', $date)w va mettre le résultat à la représentation numérique du jour de la semaine, où 0 représente dimanche, 1 est lundi ... 6 est le samedi, etc. Par conséquent, avec une simple commande la fonction que vous pouvez déterminer si une date tombe un jour de semaine:

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

vous pouvez appeler:

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

thx i avait la même approche pour résoudre plus tard :) – Smuka

+0

Grand entendre! Pouvez-vous s'il vous plaît marquer la réponse comme correcte si cela a aidé. –

0

vous n'avez pas dit clairement ce que votre problème est, parce que la approche que vous utilisez est essentiellement ok. Cependant, il y a quelques petites choses à garder à l'esprit:

  1. Une façon plus simple PHP vous donne déjà les moyens de vérifier les week-ends (en fonction de votre version de PHP). Découvrez cette question qui a déjà la réponse: Weekend in PHP

  2. Utilisation de substr Ceci est réellement inutile. $dateString = strftime('%a' , $dateTimestamp1); vous donnera déjà la chaîne abrégée (petit% a). Utilisation de LC_TIME Il se peut que votre heure ne soit pas réellement traduite en allemand. Cela dépend si le module linguistique que vous utilisez (de-DE.utf8) est installé sur votre serveur ou non. En fait, en utilisant les méthodes principales de PHP pour les vérifications de fin de semaine, vous ne devriez même pas vous soucier de choses comme celles-ci (voir 1.).

+0

thx pour les conseils que je vais le garder à l'esprit pour la prochaine fois :) – Smuka

0

si quelqu'un d'autre a le problème que je it- fixé ici est e Code 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

Notez que le paramètre 'N' est uniquement disponible à partir de PHP 5.1.0 –