PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : PHP Umkehrfunktion für date



Eagle-PsyX-
13.06.2011, 16:59
Hi,

kennt eigentlich jemand eine Umkehrfunktion für date()?
Also womit ich aus einem String (x-belibig erstellt, aber bekannt) eine Unix-Timestamp bekomme?



# Zum Beispiel
echo date('r',gmmktime());
# Sat, 04 Jun 2011 13:47:56 +0200

# So und jetzt soll aus:
$string = 'Sat, 04 Jun 2011 13:47:56 +0200';
echo reverse_date('r',$string)


Ich habe das bis jetzt immer umständlich gelöst, indem der String auseinander genommen wird.

character
13.06.2011, 17:03
http://php.net/manual/en/function.strtotime.php

Troublegum
13.06.2011, 17:07
Erst strptime() (http://www.php.net/manual/de/function.strptime.php) und dann mktime() (http://www.php.net/manual/de/function.mktime.php). Aber Achtung: die Rückgabewerte von strptime() sind etwas gewöhnungsbedürftig.

Wenn du PHP 5.3.x verwendest, kannst du auch die DateTime Klasse verwenden. Mit DateTime::createFromFormat (http://www.php.net/manual/de/datetime.createfromformat.php) und DateTime::getTimestamp (http://www.php.net/manual/de/datetime.gettimestamp.php) könnte es etwas komfortabler geben.

EDIT: mit strtotime() ist man nicht ganz so flexibel, weil nicht beliebige Format erkannt werden.

Eagle-PsyX-
13.06.2011, 17:15
@character
Das wird aber auch nur mit Englischen Zeit-Einstellungen und nach EINEM Muster funktionieren ;)

Ich benutze PHP 5.3
Hm mktime() nutze ich jetzt schon, aber mit strptime() könnte man das vermutlich kombinieren.
Nur irgendwie Schade, dass es keine vordefiniterte Funktion dafür gibt, denn immerhin ist PHP ja die Abkürzung des Musters 'r' / 'c' oder anderen Standards schon bekannt...

rumbalotte
13.06.2011, 18:01
@character
Das wird aber auch nur mit Englischen Zeit-Einstellungen und nach EINEM Muster funktionieren ;)



nö, strtotime kann so ziemlich alles, das ist ne eierlegende wollmichsau in der hinsicht
nur mit delays kommts nich so zurecht, die muss man extra behandeln

shortproof:


$string = 'Sat, 04 Jun 2011 13:47:56 +200';
preg_match('/(.*?)\+(\d*)/',$string,$matches);
echo date("Ymd H:i",strtotime($matches[1])+$matches[2]);