Fehler in Datumsumwandlung

atlantyz

Erfahrenes Mitglied
Hallo Leute,

ich kämpfe mal wieder mit einem Datum (was mich langsam aber sicher wahnsinnig macht).

Ich habe folgenden Code, dem ich mein Datum ($datum) aus einem Input- Feld im Format TT.MM.JJJJ übergebe:

Code:
function datum_zu_timestamp($datum)
{
	ereg("([0-9]{2}).([0-9]{2}).([0-9]{4})", $datum, $teile);
	$tag = $teile[1];
	$monat = $teile[2];
	$jahr = $teile[3];
	$timestamp = strtotime ($teile[3]."-".$teile[2]."-".$teile[1]);
	return $timestamp;
	
}

So, wenn ich nun z.B. den 01.11.2010 eingebe, bekomme ich folgenden timestamp:

1288566000.

Wenn ich den zurückwandel, ist das der 31.10.2010 23:00 Uhr...

Nun ist das aber nicht das gleiche Datum wie das eingegebene.. ich kann aber den Fehler nicht finden und Google brachte mich auch nicht weiter...

Bitte um Hilfe.
 
geh auf Nummer Sicher und machs über mktime()
PHP:
$timestamp = mktime(0, 0, 0, $monat, $tag, $jahr);

Wenns jetzt nihct stimmt, dann liegts am ereg....
 
Vorweg: ab php 5.3 ist ereg veraltet. Dann lieber preg_match() nehmen ;)

Hast du dir Tag, Monat und Jahr mal ausgeben lassen, ist das auch alles korrekt gefunden worden?

Folgendes funktioniert bei mir:
PHP:
<?php
function date_to_timestamp($date){
  preg_match('/(\d{2})\.(\d{2})\.(\d{4})/', $date, $match);
  if( $match ){
    return strtotime($match[2].'-'.$match[1].'-'.$match[3]);
  }
}
echo date_to_timestamp('12.04.1994');
echo '<br />';
echo date('d.m.Y', date_to_timestamp('12.04.1994'));
?>
 
Zurück