2017-05-29 8 views
0

J'ai 2 dates comme celle-ci. Je voudrais vérifier si ces 2 dates sont un week-end.Vérifiez si 2 dates sont un week-end PHP

J'ai ce code mais il ne teste que 1 date et je ne sais pas comment l'adapter ... J'ai besoin d'ajouter un $ date_end. merci pour votre aide

$date = '2011-01-01'; 
$timestamp = strtotime($date); 
$weekday= date("l", $timestamp); 
$normalized_weekday = strtolower($weekday); 
echo $normalized_weekday ; 
if (($normalized_weekday == "saturday") || ($normalized_weekday == "sunday")) { 
    echo "true"; 
} else { 
    echo "false"; 
} 
+0

Ce code est assez horrible de toute façon. Tu ferais mieux de rouler les vôtres. –

+0

Savez-vous que vous pouvez créer une 'fonction' afin de factoriser le code? –

+0

vérifiez ceci: [link] (https://stackoverflow.com/questions/4802335/checking-if-date-is-weekend-php) –

Répondre

0

Vous pouvez utiliser le code plus court pour vérifier le week-end =>date('N', strtotime($date)) >= 6. Donc, pour vérifier 2 dates - et pas seulement 1 - utiliser une fonction pour garder votre code simple et propre:

$date1 = '2011-01-01' ; 
$date2 = '2017-05-26'; 

if (check_if_weekend($date1) && check_if_weekend($date2)) { 
    echo 'yes. both are weekends' ; 

} else if (check_if_weekend($date1) || check_if_weekend($date2)) { 
    echo 'no. only one date is a weekend.' ; 

} else { 
    echo 'no. neither are weekends.' ; 
} 

function check_if_weekend($date) { 
    return (date('N', strtotime($date)) >= 6); 
} 

En utilisant votre code existant, ce qui est un peu plus, voici comment vous vérifier 2 dates:

$date1 = '2011-01-01' ; 
$date2 = '2017-05-27'; 

if (check_if_weekend_long($date1) && check_if_weekend_long($date2)) { 
    echo 'yes. both are weekends' ; 

} else if (check_if_weekend_long($date1) || check_if_weekend_long($date2)) { 
    echo 'no. only one date is a weekend.' ; 

} else { 
    echo 'no. neither are weekends.' ; 
} 

function check_if_weekend_long($date_str) { 
    $timestamp = strtotime($date_str); 
    $weekday= date("l", $timestamp); 
    $normalized_weekday = strtolower($weekday); 
    //echo $normalized_weekday ; 
    if (($normalized_weekday == "saturday") || ($normalized_weekday == "sunday")) { 
     return true; 
    } else { 
     return false; 
    } 
} 
0

Vous pouvez utiliser le strtotime(); et les fonctions date() pour obtenir le jour de la date, puis vérifier si est assis o soleil

function check_if_weekend($date){ 
    $timestamp = strtotime($date); 
    $day = date('D', $timestamp); 
    if(in_array($day, array('sun', 'sat')) 
     return true; 
    else return false; 
    } 
+0

merci Doest-il aussi vérifier si le dimanche de demain? – Pipoo

2

quelques conseils:

  • date('N') vous donne jour de la semaine normalisée, vous pouvez effectuer le test (pas besoin d'utiliser des chaînes localisées)
  • Enveloppez le tout dans un custom function et vous avez terminé
+0

'return in_array (date ('N', strtotime ($ date)), [6, 7,]);' – DarkBee

+0

fonctionne également avec 'date ('w')', mais gardez à l'esprit que '' w '' est 0 indexé au lieu de 1 indexé, comme ''N'' est – Jelmergu

0

plusieurs réponses en fusion d'un et de donner un peu plus, vous viendriez à ce qui suit:

function isWeekend($date) { 
    return (new DateTime($date))->format("N") > 5 ? true : false; 
} 

Ou le long chemin:

function isWeekend($date) { 
    if ((new DateTime($date))->format("N") > 5) { 
     return true; 
    } 
    return false; 
}