mktime() beachtet Schaltjahre?

Fragen zu allen Themen rund ums Programmieren außerhalb von phpBB können hier gestellt werden - auch zu anderen Programmiersprachen oder Software wie Webservern und Editoren.
Antworten
Benutzeravatar
leopittoni
Mitglied
Beiträge: 1162
Registriert: 26.04.2004 20:17

mktime() beachtet Schaltjahre?

Beitrag von leopittoni »

Hallo

Kleine Frage zu mktime()
mktime() ist hilfreich bei Datumsberechnungen und -prüfungen, da automatisch das korrekte Datum für ungültige Angaben berechnet wird
http://de.php.net/mktime

Beachtet mktime() auch Schaltjahre? Oder muss man das "manuell" nochmals überprüfen?

Danke, Léo
Benutzeravatar
Miriam
Mitglied
Beiträge: 12310
Registriert: 13.10.2004 07:18
Kontaktdaten:

Beitrag von Miriam »

Überprüfe es doch vorher, indem Du mit checkdate() die Gegenprobe machst.....
Gruss, Miriam.
Ich schmeiß' alles hin und...
... lasse es liegen
Benutzeravatar
leopittoni
Mitglied
Beiträge: 1162
Registriert: 26.04.2004 20:17

Beitrag von leopittoni »

mktime() passt das Datum ja gleich richtig an. Also
32.01.2007 wird automatisch zu 01.02.2007
checkdate() gibt mir da einfach nur false aus...
Deshalb: korrigiert mktime() auch Schaltjahre?

Léo
Benutzeravatar
Miriam
Mitglied
Beiträge: 12310
Registriert: 13.10.2004 07:18
Kontaktdaten:

Beitrag von Miriam »

Entweder Du liest das von Dir verlinkte durch (und die Antwort auf Deine Frage steht dort).
Oder Du probierst es aus. Code zum Testen ist auch auf der verlinkten Seite vorhanden....
Gruss, Miriam.
Ich schmeiß' alles hin und...
... lasse es liegen
Benutzeravatar
leopittoni
Mitglied
Beiträge: 1162
Registriert: 26.04.2004 20:17

Beitrag von leopittoni »

Hab ich gelesen...
ist das angegebene Datum gültig, wird TRUE zurückgegeben, ansonsten FALSE.
Das sagt mir aber auch nicht, ob mktime() beim Korrigieren eines Datums Schaltjahre beachtet...

Léo
Benutzeravatar
Miriam
Mitglied
Beiträge: 12310
Registriert: 13.10.2004 07:18
Kontaktdaten:

Beitrag von Miriam »

Du solltest die Seite hinter Deinem Link lesen....
Beispiel 386. Letzter Tag des nächsten Monats

<?php
$lastday = mktime(0, 0, 0, 3, 0, 2000);
echo strftime ("Letzter Tag im Feb. 2000 ist der %d.", $lastday);

$lastday = mktime(0, 0, 0, 4, -31, 2000);
echo strftime ("Letzter Tag im Feb. 2000 ist der %d.", $lastday);
?>
Da steht doch alles... sogar mit Codebeispielen, die Du gern benutzen kannst.....
Gruss, Miriam.
Ich schmeiß' alles hin und...
... lasse es liegen
Benutzeravatar
leopittoni
Mitglied
Beiträge: 1162
Registriert: 26.04.2004 20:17

Beitrag von leopittoni »

Was das jetzt mit meiner Frage zu tun hat bleibt mir ein Rästel...

Vielleicht war meine Frage unglücklich gestellt...

mktime() korrigiert ja automatisch das Datum. Dass heisst: wenn das Datum zb. 33.01.2007 ist, wird es automatisch zu 02.02.2007.

Meine Frage war nichts anderes als: werden in diesen Korrekturen auch Schaltjahre beachtet?

Léo
Benutzeravatar
easygo
Mitglied
Beiträge: 2170
Registriert: 03.09.2004 13:45
Kontaktdaten:

Beitrag von easygo »

leopittoni hat geschrieben:Beachtet mktime() auch Schaltjahre? Oder muss man das "manuell" nochmals überprüfen?
Komische Frage! mktime erstellt immer den korrekten UNIX Timestamp, nicht mehr und nicht weniger. :roll:

date kann u.a. das korrekte Datum draus machen und berücksichtigt dabei Schaltjahre..

Code: Alles auswählen

echo date("d.m.Y", mktime(0, 0, 0, 02, 29, 2005));
Echo: 01.03.2005
Dennis63
Ehemaliges Teammitglied
Beiträge: 2597
Registriert: 02.07.2003 18:46

Beitrag von Dennis63 »

Warum sollte es Schaltjahre denn nicht beachten? Ist doch etwas ganz stinknormales, und nichts besonderes.

Wobei es deutlich schneller gehen sollte, einfach zwei PHP-Zeilen zu schreiben, als hier auf eine Antwort zu warten.

Daher: Probiere doch aus, was mktime() mit dem 29.02.2000 und dem 29.02.2001 macht ;)


Grüße
Dennis
Antworten

Zurück zu „Coding & Technik“