PHP mktime Abfrage

SSD1TB

Ensign
Registriert
Okt. 2010
Beiträge
238
Hallo!

Ich versuche gerade die Sekunden seit einem bestimmten Datum zu bestimmen, z.B.

$a= time() - mktime(9,0,0,12,08,2012);
echo $a;

müsste jetzt (wenn wir den 8.Dezember 2012 9 Uhr noch was haben)

ein paar Sekunden anzeigen.

Tut es aber nicht, habe jetzt rumprobiert und herausgefunden, dass die 5. Stelle nicht den
Tag betrifft, sondern die Woche :freak:

Also:


$a= mktime(9,0,0,12,08,2012);
$b= mktime(9,0,0,12,07,2012);
$h=time();
echo $b-$a;



gibt aus:
604800 Sekunden, was einer Woche entspricht.



Liegt wohl an meinem Provider, oder der PHP Version, keine Ahnung.

Gibt es einen anderen Befehl, der nach Stunde,Minute,Sekunde,Monat,Tag,Jahr rechnet?

Und welcher Hirni hat sich überhaupt eine so unlogische Reihenfolge ausgedacht, dem gehört mit ner Holzlatte auf`s Hirn gehauen:evillol:
 
Du musst den Tag ohne führende Null angeben, also mktime(9,0,0,12,8,2012) anstelle von mktime(9,0,0,12,08,2012).

int mktime ([ int $hour = date("H") [, int $minute = date("i") [, int $second = date("s") [, int $month = date("n") [, int $day = date("j") [, int $year = date("Y") [, int $is_dst = -1 ]]]]]]] )

date("H") = Stunde mit führender Null
date("i") = Minute mit führender Null
date("s") = Sekunde mit führender Null
date("n") = Monat ohne führende Null
date("j") = Tag ohne führende Null
date("Y") = Jahr vierstellig (aber auch zweistellig möglich)



Das ganze kommt wohl vom Amerikanischen, denn die schreiben Monat-Tag-Jahr.
 
Zuletzt bearbeitet:
*bautz*

Du gibts die Zahlen nicht korrekt an. Es existiert keine "08" im regulären Zahlensystem, die 0 fällt stets weg. Gibst du sie dennoch an, so wird ein anderes Zahlensystem vermutet - oder irgendwas geht schief. ;)

Aus deinem 8. Dezember 2012 wird jedenfalls mittels mktime(9,0,0,12,08,2012) ein 30.November 2012.

Mit ein wenig Lesen in der Doku von PHP hättest du dir das auch selbst einfach erklären können. Ich habe die Seite zu mktime() kurz nach deinem "08"-Problem durchsuchen lassen und bin auf Anhieb fündig geworden:

Maffu schrieb:
28-Oct-2008 08:05
When calling mktime(), be sure that you use values without leading zeros. The date comes out wrong in the following example:

$endts = mktime(12, 00, 00, 12, 08, 2008, 0);

(note the 08 instead of just 8)

C's scanf() has a format specification where leading 0's can indicate an octal value - perhaps this is related?
Ergänzung ()

SSD1TB schrieb:
Und welcher Hirni hat sich überhaupt eine so unlogische Reihenfolge ausgedacht, dem gehört mit ner Holzlatte auf`s Hirn gehauen:evillol:

Genau! Irgendein dummer Europäer hat sich einst gedacht, es wäre intelligent, den Tag zuerst zu schreiben. Die Amerikaner schreiben zuerst den Monat, dann den Tag. Selbst wenn man ein Programm hat, welches nicht fähig ist explizit nach Datum zu sortieren und man sortiert nach Zahlen so macht das Ergebnis Sinn.

Versuch mal, eine Liste voll europäischer Datumsangaben nach Zahlen zu sortieren. 3. Dezember, 4. November, 5. Mai, 6. Dezember. Ergibt sortiert wenig Sinn. Was für ein dummes Format! ;-))
 
Hallo!

Danke Leute!

Die überflüssige 0 war das Problem, dachte schon ich spinne, weil früher hat
es immer geklappt mit dem Script(da habe ich die null weggelassen)

Zu der Reihenfolge:
Erstens haue ich mir die Holzlatte selber überm Kopf :freak:

Und zweitens benenne ich meine privaten Dateien wie Videos auch nach Jahr-Monat-Tag, weil damit die Sortierung nach Datum möglich ist.

Ich meinte damit, wieso Sortiert man nicht so:

Jahr-Monat-Tag-Stunde-Minute-Sekunde

Oder umgekehrt, wäre irgend wie logischer..
Klar, wenn man es anders gelernt hat will man es nicht mehr anders :)
 
Weil Parameter in PHP von rechts nach links weggelassen werden können, aber nicht von links nach rechts.
Es kommt häufiger vor, dass man eine bestimmte Uhrzeit benötigt, wahlweise des aktuellen Tages oder allgemein die Uhrzeit. Dann gibt man nur H:i:s an und lässt m.d.Y auf Standard.
 
Zurück
Oben