ich eine Schleife haben, die Wochenendtage zählt, funktioniert es wie folgt aus:Datum hält einen Zeitstempel aus der Zukunft als ein Datum aus der Vergangenheit
$weekends = 0;
while ($begin <= $today) {
$no_days++;
$what_day = date("N", $begin);
if ($what_day > 5) {
$weekends++;
};
$begin += 86400;
};
$ beginnen am ersten Tag des Monats ist, und heute $ heute ist und ich sie wie diese:
$begin = date("Y-m-01");
$today = date("Y-m-d");
$ beginnen und heute $ sind richtig, aber aus irgendeinem Grund meine Schleife sagt, dass drei aufeinander folgende Tage Wochenende sind. Ich druckte te Wert von $ beginnt an der Innenseite des, wenn Gründe für debuggin und ich erhalte die folgende Ausgabe:
2016-11-05 12:11:00 (1478329200)
2016-11-06 12 : 11: 00 (1478415600)
2016-11-06 11:11:00 (1478502000)
Statt dessen, was ich bekommen erwarten ist:
2016-11-05 12:11:00 (1478329200)
2016-11-06 12:11:00 (1478415600)
2016-11-07 12:11:00 (1478502000)
Dieses Skript funktioniert seit mehreren Monaten gut, aber heute funktioniert nicht mehr. Ich habe eine date_default_timezone_set('America/Los_Angeles');
am Anfang.
Ich verstehe nicht ganz, wie Daten funktionieren, also bin ich nicht wirklich sicher, wie ich anfangen soll, nach dem Problem zu suchen, also wenn es ein Zeitzonenproblem ist und jemand mich auf eine Informationsquelle hinweisen möchte zu diesem Thema zu lernen werde ich wirklich glücklich sein :)
EDIT: Wie @Devon darauf hinweist. Ich habe $end
für $today
geändert, um Missverständnisse zu vermeiden.
Lustig, wie dies während der Sommerzeit passiert .... –
Dank @JohnConde, "Sommerzeit" bekomme mich zur Antwort;) !. Ich werde die Frage hier stellen, bis ich genug gelesen habe, um eine gute Antwort zu geben, oder jemand schreibt eine gute Antwort dafür. – lcjury
Es gibt eine Reihe von Kopfschmerzen, die Sie bekommen können, indem Sie einfach annehmen, dass "morgen" "heute plus 86400 Sekunden" ist. Betrachten Sie einen anderen Weg, um von einem Tag zum nächsten zu kommen. –