Datums String in Timestamp umwandeln

S

spex

Moische,

Ich will in PHP zwei Timestamps vergleichen, den aktuellen und den aus einer XML-Datei (Nicht veränderbar).

Der aus der XML-Datei sieht folgendermaßen aus:
Code:
Fri Oct 17 14:35:14 2008

Jetzt hab ich mir gedacht ich wandel das alles mittels mktime() in einen Timestamp um, aber naja wenns so einfach wär...

Für mktime() brauche ich:
  • Jahr
  • Monat
  • Tag
  • Stunde
  • Minute
  • Sekunde

Das hab ich auch alles darin stehen, was mir jetzt fehlt ist der Monat.
Der Monat steht dort nur als "Oct" und bevor ich jetzt ein Array erstelle mit allen Monaten, in Englisch abgekürzt auf 3 Buchstaben, hab ich mir gedacht das muss doch auch irgentwie einfacher gehen.

Gibt es in php die Möglichkeit das "Oct" in z.B den Wer 10 umzuwandeln?

Gruss
 
Zuletzt bearbeitet von einem Moderator:
Ich will doch aus "Oct" oder "Mar" eine Zahl haben.

Also aus "Oct" soll 10 werden
und aus: "Mar" wird 3.

Das geht aber mit date() nicht, date() erwartet ja selber einen Timestamp.
Und eine Ausgabe wie "Fri Oct 17 14:35:14 2008" kann ich nicht nach Grösse vergleiche.

Ich willl ja testen ob:
"Fri Oct 17 14:35:14 2008" älter ist als time()-20

Und das geht so nicht.

Deshalb will ich mittels mktime() einen Timestamp erstellen, der dann mit time()-20 verglichen werden kann. Das wiederum geht nur wenn ich die Zahl des Monats habe, also kann ich mit "Oct" nicht viel anfangen.

Verstehst du xD ?
 
Ich habs jetzt so gemacht:
PHP:
function get_timestamp($time) {

	preg_match("/^... (.*) (.*) (.*):(.*):(.*) (.*)$/i", $time, $time);

	$month = array(
		'Jan'	=>	'1',
		'Feb'	=>	'2',
		'Mar'	=>	'3',
		'Apr'	=>	'4',
		'May'	=>	'5',
		'Jun'	=>	'6',
		'Jul'	=>	'7',
		'Aug'	=>	'8',
		'Sep'	=>	'9',
		'Oct'	=>	'10',
		'Nov'	=>	'11',
		'Dec'	=>	'12'
	);
	
	$timestamp = mktime($time[3], $time[4], $time[5], $month[$time[1]], $time[2], $time[6]);
	
 return $timestamp;
}

Das ist zwar nicht schön, aber es erfüllt seinen Zweck.

Gruss
 
Zuletzt bearbeitet von einem Moderator:
Nein das erzeugt bei mir eine leere Ausgabe.
Das kann nicht sein.

Folgendes funktioniert bei mir wunderprächtig.
PHP:
$ts = strtotime( 'Fri Oct 17 14:35:14 2008' ).'<br/>';
$now = time();
$diff = $ts - $now;
if ( $diff > 0 ) echo 'datum in zukunft';
else echo 'datum in vergangenheit';
Mit date() kannst du aus $ts nun jeden beliebigen Wert ermitteln. :)
 
Zurück