Diese Funktion scheint nur false zurückzugeben. Bekommt einer von euch das Gleiche? Ich bin mir sicher, dass ich etwas übersehen habe, aber frische Augen und all das ...
function isweekend($date){
$date = strtotime($date);
$date = date("l", $date);
$date = strtolower($date);
echo $date;
if($date == "saturday" || $date == "sunday") {
return "true";
} else {
return "false";
}
}
Ich rufe die Funktion folgendermaßen auf:
$isthisaweekend = isweekend('2011-01-01');
true
undfalse
sollte nicht als Zeichenfolge zitiert werden. Außerdem sollte Ihr Code einen Analysefehler enthalten und aufgrund der Streuung}
in Ihrem if überhaupt nicht ausgeführt werden.Antworten:
Wenn Sie PHP> = 5.1 haben:
Andernfalls:
quelle
return date('w', strtotime($date)) % 6 == 0
ist die Verwendung etwas kürzer.Eine andere Möglichkeit ist die Verwendung der DateTime- Klasse. Auf diese Weise können Sie auch die Zeitzone angeben. Hinweis: PHP 5.3 oder höher.
Wenn Sie eine bestimmte Datumszeichenfolge überprüfen müssen, können Sie DateTime :: createFromFormat verwenden
Das Schöne an dieser Art ist, dass Sie die Zeitzone angeben können, ohne die Zeitzone in PHP global zu ändern, was in anderen Skripten (z. B. Wordpress) zu Nebenwirkungen führen kann.
quelle
Wenn Sie PHP 5.5 oder PHP 7 oben verwenden, möchten Sie möglicherweise Folgendes verwenden:
und es wird "wahr" zurückgeben, wenn heute Wochenende ist und "falsch", wenn nicht.
quelle
Hier:
quelle
Die Arbeitsversion Ihres Codes (aus den von BoltClock aufgezeigten Fehlern):
Das streunende "{" ist schwer zu erkennen, insbesondere ohne einen anständigen PHP-Editor (in meinem Fall). Also poste ich die korrigierte Version hier.
quelle
Für Leute wie mich, die nicht minimalistisch sind, gibt es eine PECL-Erweiterung namens " intl ". Ich benutze es für die IDN-Konvertierung, da es viel besser funktioniert als die Erweiterung "IDN" und einige andere n1-Klassen wie "IntlDateFormatter".
Nun, ich möchte sagen, dass die "intl" -Erweiterung eine Klasse namens "IntlCalendar" hat, die viele internationale Länder verarbeiten kann (z. B. in Saudi-Arabien ist Sonntag kein Wochenendtag). Der IntlCalendar hat eine Methode IntlCalendar :: isWeekend . Vielleicht probiert ihr es aus, ich mag die Tatsache, dass "es für fast jedes Land funktioniert" in diesen internationalen Klassen.
EDIT: Nicht ganz sicher, aber seit PHP 5.5.0 ist die intl-Erweiterung mit PHP (--enable-intl) gebündelt.
quelle
Das funktioniert bei mir und ist wiederverwendbar.
quelle