Datum in Unix-Timestamp umwandeln

qsrs

Erfahrenes Mitglied
Hallo,

habe ein Skript, in dem das Datum als Unix-Timestamp in einer MySQL-DB gespeichert wurde. Kann man ein Datum, z.B. 01.01.2000 auch in den Unix-Timestamp umwandeln? Hintergrund der Frage ist der, dass man nach Datum suchen können sollte, aber da der Timestamp gespeichert wurde, wird eine einfache MySQL-Abrfrage mit dem Wert 01.01.2000 nicht funktionieren.
 
Und ich war der langsamste... :(

mktime — Gibt den Unix-Timestamp/Zeitstempel für ein Datum zurück

int mktime ( [int $Stunde [, int $Minute [, int $Sekunde [, int $Monat [, int $Tag [, int $Jahr [, int $is_dst]]]]]]] )


$var = mktime(0,0,0,01,01,2000)

in $var sollte nun deine Timestamp drin sein...
 
Du solltest wissen, dass ein Unix-Zeitstempel immer genau einen Zeitpunkt beschreibt und nicht einen Zeitraum. Einen Tag, also einen Zeitraum von 86400 Sekunden, damit abzubilden, ist nicht besondern effizient.
 
Hallo,

habe doch noch eine Frage zur Umsetzung. Wie könnte ich am Besten ein Suchformular umsetzen, indem ich nach einem Datum suche (z.B. 01.01.2000), wenn in der Datenbank ein Unix-Timestamp gespeichert wurde.

$var = mktime(0,0,0,01,01,2000) funktioniert hier ja nicht. Wie wandle ich das am effizientesten um, so dass auch möglichst gute Suchergebnisse geliefert werden? Danke für evtl. Antworten.
 
Du bekommst ja ein Datum, sprich einen Tag, dann formst du zwei Zeitstempel daraus, einmal 0:00:00 Uhr und einmal 23:59:59 und suchst in der Datenbank mit BETWEEN alle Zeitstempel raus, die dazwischen liegen.
 
Vielen Dank. Das mit der Abfrage wäre kein Problem, wie forme ich aber die Zeitstempel für den entsprechenden Tag?

Dann habe ich noch etwas, was ich nicht verstehe.

Ich habe einen Zeitstempel von 1178694227, was dem 09.05.2007 - 09:03:47 entpsricht. Wenn ich mir jetzt mit echo mktime (09,03,47,05,09,2007) ausgeben lasse, erhalte ich jedoch einen Zeitstempel von 1177884227 zurück, das entspräche einem Datum von 30.04.2007 - 00:03:47. Wie kommt das zustande?
 
Das liegt an den führenden Nullen.

Entweder du übergibst sie als String

PHP:
mktime("09", "03", "47", "05", "09", "07")

Oder ohne die führenden Nullen:

PHP:
mktime(9, 3, 47, 5, 9, 7)
 
Zurück