php-resource




Archiv verlassen und diese Seite im Standarddesign anzeigen :
unterscheiden zwischen deutsch/iso/us datum


 
BlackMagic
11-11-2005, 14:45 
 
Hi,

habe das Problem das ich nicht weiss wie ich verschiedene Datumtypen (de/us/iso) unterscheiden kann. Diese werden dann in ein Timestamp umgewandelt und gespeichert. Habe es mit preg_match() versucht das er z.B einen Punkt (.) oder bei us ein Slash sucht , bzw iso Bindestrich. Jedoch liefert er mir egal welches Datum es ist immer als ergebniss Deutsch.

Leider stehe ich mit RegEx irgewie auf Kriegsfuss. Sommit kann ich nicht beurteile ob es ricgtig oder falsch ist.

Solche eingaben sind möglich:
27.08.2006 00:59:59
2005-08-27 00:59:59

Wie schaffe ich es nun das er das Datum korrekt erkennt..


if(preg_match('/./',$dateStr) >= 1) {
$date = split('[.:]',$dateStr);
$tmp0 = $date[0];
$tmp1 = $date[1];
$date[0] = $date[2];
$date[1] = $tmp0;
$date[2] = $tmp1;
} else {
$date = split('[-:]', $dateStr);
}

return mktime((int)$date[3],(int)$date[4],(int)$date[5],(int)$date[1],(int)$date[2],(int)$date[0]);

 
mrhappiness
11-11-2005, 15:04 
 
Und wie sieht der Code aus?

 
onemorenerd
11-11-2005, 15:05 
 
strptime (ab PHP5)

Woher kommen die Daten eigentlich? Kannst du nicht dafür sorgen, dass sie in einem bestimmten Format vorliegen?

 
BlackMagic
11-11-2005, 15:20 
 
... werden per inputfeld eingegeben.

php5 ist nicht vorhanden...


habt ihr vielleicht ein RegEx ausdrück für mich der zumindest den String korrekt durchsucht?

 
mrhappiness
11-11-2005, 15:31 
 
Vor deinem . im regulären Ausdruck fehlt ein \

Du suchst nach einem beliebigen Zeichen, \. sucht nach dem Punkt.

Warum benutzt du für sowas nicht strpos?
Oder gleich explode?

Wenn ein explode bei Punkten nicht geht, ist es kein deutsches Datumund du versuchst es mit einem -

 
BlackMagic
11-11-2005, 15:53 
 
nun läufts...

if(preg_match('#^\d{1,2}\.\d{1,2}\.\d{2,4}#',$dateStr) >= 1)


Alle Zeitangaben in WEZ +2. Es ist jetzt 16:20 Uhr.