Datum/Uhrzeit wieder in Timestamp wandeln ?
lima-city → Forum → Programmiersprachen → PHP, MySQL & .htaccess
anweisung
beitrag
damal
date
direkte kritik
fehler
format
formatierung
funktion
geistern
gebt hast
interne funktionen
jahr
minute
parameter
rangliste
scout
sekunde
verzicht
vorhandenen funktionen
-
Moin,
mal wieder eine Frage.
Kann man ein Datums-Format wie z.B. "2007-06-02 16:43" oder "26.02.1988 16:43" wieder in einen Timestamp zurückverwandeln ?
Greetz,
Aza -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
Ja, http://php.net/mktime
-
Wenn dir das Format bekannt ist kannst du jederzeit umwandeln, allerdings musst du zuerst den string trennen
http://php.net/substr
hier ein Bsp.
<?php //deine Datumsvariable $date = "2007-06-02 16:43"; //formatieren für mktime() $year = substr($date, 0,4); $month = substr($date, 5, 2); $day = substr($date, 8, 2); $hour = substr($date, 11 , 2); $minute = substr($date, 14, 2); //Ergebisse überprüfen echo $year; echo "<br>"; echo $month; echo "<br>"; echo $day; echo "<br>"; echo $hour; echo "<br>"; echo $minute; //der timestamp $timestamp = mktime(0, $minute, $hour, $month, $day +14, $year); echo "<br>"; echo $timestamp; ?>
mfg Zar -
Wieso so umständlich?
Direkt in PHP bietet sich strtotime() an und wenn es in der SQL Anweisung geschehen soll würde ich bei MySQL auf UNIX_TIMESTAMP() zurückgreifen. Geht auch in die andere Richtung via FROM_UNIXTIME(). -
Weil ich mit strtotime() immer andere Werte bekomme:
Also der Code den ich nun zum testen habe ist
<?php //deine Datumsvariable $date = "2007-06-02 16:43"; //formatieren für mktime() $year = substr($date, 0,4); $month = substr($date, 5, 2); $day = substr($date, 8, 2); $hour = substr($date, 11 , 2); $minute = substr($date, 14, 2); //Ergebisse überprüfen echo $year; echo "<br>"; echo $month; echo "<br>"; echo $day; echo "<br>"; echo $hour; echo "<br>"; echo $minute; //der timestamp $timestamp = mktime(0, $minute, $hour, $month, $day +14, $year); echo "<br>"; echo $timestamp; echo "<br>"; echo strtotime($date); ?>
Und die Ausgabe ist:
2007 06 02 16 43 1181947396 1180795380
-
Danke erstmal wieder für die vielen ANtworten.
Also die Sache mit mktime() liefert auf jeden Fall den richtigen Timestamp, sehe ich das nun soweit korrekt ? -
Da du beim substr() selbst das Eingabeformat des Datumsfestlegst, und dies Korrekt tust dann liefert die mktime funktion auf jedenfall den richtigen timstamp, ich hoffe dir ist das Schma beim substr. klar
Ich glaube das die strtotime() ein problem mit der formatierung hat -
Jop, das substr hab ich kapiert. Darum wollte ich nochmal sichergehen, dass dein Vorschlag nun auch wirklih den richtigen Wert liefert, weil ich den eben verstanden habe. Das strotime() scheitn dann ja irgendwie nich zu funktionieren. :>
-
jap meines funktioniert, und strtotime scheitert an der formatierung
mehr infos als dort hab ich auch nu ned über die möglichkeiten
http://php.net/strtotime -
Also sorry aber wenn Ihr die Argumente richtig einsetzen würdet, würde es auch funktionieren !
In PHP ist die Anordnung bissl anders als in Unix
1. muß die +14 beim Tag weg
2. die Parameter $hour und $seconds sind getauscht
Korrekt: $timestamp = mktime($hour, $minute, 0, $month, $day, $year);
Somit ist: mktime() = strtotime()
Grüßle
PS: Ich finde es doch immer wieder seltsam, dass die Menschen nicht den fest implementierten PHP Funktionen vertrauen.
Beitrag geändert: 26.7.2007 14:52:40 von scout -
Okay waren zwei Fehler meiner Seite, sorry. zurecht vertraue ich diversen Funktionen wo aufgrund einer Formatierung die durch einen PC erkannt werden soll nicht mehr den vorhandenen Funktionen, ohne sie nicht zum. gegengeprüft zu haben.
Dass dann ab und zu beim gach runterprogrammieren Fehler auftreten, kann auch mal passiern -
Was beduetet denn die "0" in dem mktime ?
-
Was beduetet denn die "0" in dem mktime ?
das is, wenn du dir die funktion anschauen würdest, die sekunden angabe... da kannst du natürlich noch, falls für dich die sekunden entscheidend sind, noch deinen sekundenwert eingeben...
mktime ($Stunde,$Minute,$Sekunde,$Monat,$Tag,$Jahr);
mfg
Beitrag geändert: 26.7.2007 15:51:02 von ranglisten -
Ah, okay, verstehe, danke.
-
@zar: es war auch keine direkte Kritik an dir So wie ich das sehe geistern hier nur mind. 5 Leute rum und keiner hat sich die Mühe gemacht, mal etwas genauer hinzuschauen.
Und bei Datumsberechnungen auf interne Funktionen zu verzichten, find ich nicht so gut, weil spätestens dann das ganze den Leuten auf die Füße fällt, wenn diese Schaltjahre usw. mit beachten und berechnen müssen. Die internen Funktionen machen das alles automatisch, sogar mit Berücksichtigung der Zeitzone.
Demzufolge würde ich strtotime() vorziehen, genauso wie gmdate() usw.
Grüßle
Beitrag geändert: 26.7.2007 17:31:31 von scout -
wobei irgendeine Datumsfunktion in PHP hatte Probleme mit dem Jahr 2000 und bei 101 weitergemacht, ich hab damals des als funktion umgebastelt wo ich mir dann mehr oder weniger selbst die Formatierung mitgegeben hab, um felxibler zu sein, weil ich damals nicht wusste, wie die Daten kommen.
Und ich seh das schon als Kritik, aber als kosntruktive, weil wenn du nicht gewesen wärst hätt ich einen scheiß weiter verzapft, ich bin froh das du diese geübt hast -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage