Mailinglisten-Archive |
> On Thu, Aug 08, 2002 at 01:57:50PM +0200, Martin Spütz wrote:
>> preg_replace()
> das kanns ja irgendwie nicht sein!
> mit date hat man 1000 moeglichkeiten einen unix timestamp in ein
> normales datum mit einem format-string zu bringen, und es gibt keine
> funktion die das gegenteil macht????
> ich hab zB in einer datenbank gespeichert wie der user das datum ablegen
> muss. (zB : m.d.Y) jetzt wuerde ich geren, eben je nachdem was in der
> datenbank fuer ein format-string ist, dieses datum in einen unix
> timestamp umwandeln um zu ueberpruefen ob es valid ist, und wenn ja es
> gleich wieder umwandeln in das datenbank format (diesmal mit date)
> da muss es doch eine funktion geben... bitte... bitte.. bitte....
function un_date($pattern,$string)
{
$mlist = array( 'januar' => 1,
'februar' => 2,
'märz' => 3,
'märz' => 3,
'maerz' => 3,
'april' => 4,
'mai' => 5,
'juni' => 6,
'juli' => 7,
'august' => 8,
'september' => 9,
'oktober' => 10,
'november' => 11,
'dezember' => 12 );
$day = 0;
$month = 0;
$year = 0;
$hour = 0;
$minute = 0;
$second = 0;
$c = strlen($pattern);
for($i = 0; $i < $c; $i++) {
$follow = substr($pattern,$i+1,1);
if ($follow == "\\") {
$follow = substr($pattern,$i+2,1);
}
switch (substr($pattern,$i,1)) {
case 'd': $l = 2; break;
case 'm': $l = 2; break;
case 'y': $l = 2; break;
case 'Y': $l = 4; break;
case 'H': $l = 2; break;
case 'i': $l = 2; break;
case 's': $l = 2; break;
case 'F':
reset($mlist);
foreach($mlist as $monthname => $monthnum) {
if (strpos('#'.strtolower($string),$monthname) == 1) {
$month = $monthnum;
$l = strlen($monthname);
break;
}
}
break;
case "\\": $l = 1; $i++; break;
default:
$l = strpos($string,$follow);
$l = 1;
}
$work = substr($string,0,$l);
$string = substr($string,$l);
switch (substr($pattern,$i,1)) {
case 'd': $day = $work; break;
case 'm': $month = $work; break;
case 'Y': $year = $work; break;
case 'H': $hour = $work; break;
case 'i': $minute = $work; break;
case 's': $second = $work; break;
case 'y':
if ($work >= 70) {
$year = 1900+$work;
} else {
$year = 2000+$work;
}
break;
}
}
$timestamp = mktime($hour,$minute,$second,$month,$day,$year);
return $timestamp;
}
Das Teil verhält sich ähnlich wie die Date Funktion ... nur eben umgekehrt
...
ich hab noch nicht alle Sachen in das teil implementiert, aber die
Std-Konvertierungen sollten damit gehen ...
Achja ... langsam isses auch ;-)
> [ -e n y o- ]
Gruss
Andreas Lange
--
Haas Media GmbH, Agentur für moderne Medien
Rehbockstraße 25, 30167 Hanover
Tel: (05 11) 270 38 70, Fax: (05 11) 270 38 69
http://www.haas-media.de
php::bar PHP Wiki - Listenarchive