Entwickler-Ecke
Programmiersprachen (Server) - Unix-Timestamp (der aus MySQL) in Form von Time() umrechnen?
Wolle92 - Mi 23.01.08 15:32
Titel: Unix-Timestamp (der aus MySQL) in Form von Time() umrechnen?
Hallo,
ich möchte zwei Zeiten in PHP vergleichen, die eine davon wird aus einer MySQL-Datenbank gelesen...
In der Form YYYY-MM-TT HH:MM:SS...
Die andere ist die aktuelle Zeit, als Ergebnis der Funktion Time()...
Um dann damit rechnen zu können, will ich jetzt alles auf das Time()-Ergebnis-Fomat bringen...
Wie mache ich das?
Wolle
GTA-Place - Mi 23.01.08 15:52
Quelltext
1: 2: 3:
| $sql = mysql_query("SELECT UNIX_TIMESTAMP(dateCol) AS TimeStamp FROM dateTable"); $result = mysql_fetch_assoc($sql); $timestamp = $result['TimeStamp']; |
Wolle92 - Mi 23.01.08 15:55
Aber die Time-Funktion liefert ja keinen Unix-Timestamp zurück...
sonder sowas:
1201096462
nen Unix-Timestamp ist doch IMHO 20080123145416, oder?
GTA-Place - Mi 23.01.08 22:07
Nein. Ein Unix-Timestamp - time() gibt so einen aus - gibt die Sekunden seit dem 01.01.1970 an. Und das ist das was du möchtest ;-)
Christian V. - Do 24.01.08 00:16
GTA-Place hat folgendes geschrieben: |
Nein. Ein Unix-Timestamp - time() gibt so einen aus - gibt die Sekunden seit dem 01.01.1970 an. Und das ist das was du möchtest ;-) |
Was er möchte....
Wohl eher, wonach er gefragt hat ;)
Nun, das was du willst kannst du folgendermassen erreichen:
Du löschst einfach mittels RegEx alles raus, was keine zahlen sind. ;) Also einfach mit \D matchen, und mit '' ersetzen.
DarkHunter - Do 24.01.08 00:28
Wenn das Format immer YYYY-MM-TT HH:MM:SS ist, dann kannst du über einen Regex und die Funktion mktime() einen Timestamp draus machen.
Regex:
(\d\d\d\d)-(\d\d)-(\d\d) (\d\d):(\d\d):(\d\d)
in php würde das ganze so aussehen:
Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12:
| $data = <daten aus der mysql-datenbank>; $regex = "/(\d\d\d\d)-(\d\d)-(\d\d) (\d\d):(\d\d):(\d\d)/i"; $date = array(); if (preg_match($regex,$data,$date)){ $year = $date[1]; $month = $date[2]; $day = $date[3]; $hour = $date[4]; $min = $date[5]; $sec = $date[6]; $timestamp = mktime($hour,$min,$sec,$month,$day,$year); } |
Anmerkung: Code ist nicht getestet, sondern soll nur als Hinweis dienen.
GTA-Place - Do 24.01.08 07:40
Das ist doch Blödsinn. Wozu gibt des denn die Funktion UNIX_TIMESTAMP von MySQL?
Wolle92 - Do 24.01.08 16:09
Leute, GTA hat recht...
Muss man einfach mal in PHPMyAdmin eingeben...
Quelltext
1:
| SELECT UNIX_TIMESTAMP(time) FROM table |
Kommt genau so eine zehnstellige Zahl raus wie bei der Time()-Funktion...
Leider weiß ich jetzt nicht mehr, wofür ich das brauchte...
Christian V. - Sa 26.01.08 19:09
Wolle92 hat folgendes geschrieben: |
Aber die Time-Funktion liefert ja keinen Unix-Timestamp zurück...
sonder sowas:
1201096462
nen Unix-Timestamp ist doch IMHO 20080123145416, oder? |
Was möchstest du den nun? Den Unix Timestamp, oder das von dir beschriebene Format?
GTA's Lösung ist für den Unix Timestamp gedacht. Dein Problem, etwas wie 20080126180120 ausgeben, löst es nicht!
Wie gesagt, einfach die preg_replace Funktion benutzen.
C#-Quelltext
1: 2: 3: 4:
| <?PHP $time = '2008-01-26 18:02:21'; $result = preg_replace('~\D~', '', $time); ?> |
Wolle92 - So 27.01.08 10:23
hab doch schon gesagt, das GTAs Antwort richtig ist...
GTA-Place - So 27.01.08 10:52
Christian V. hat folgendes geschrieben: |
Was möchstest du den nun? Den Unix Timestamp, oder das von dir beschriebene Format? |
Wolle92 hat folgendes geschrieben: |
Um dann damit rechnen zu können, will ich jetzt alles auf das Time()-Ergebnis-Fomat bringen... |
;-)
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2024 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!