out of frustration of needing and not having strptime() on certain machines [read: windows] and on certain versions of php [read: pre5.1] I wrote a crude userland 'compat' function. it works in so far as I have tested it... but it feels like a crap implementation, my attempt is below, the question can anyone else to else do better (or has anyone already done so?) - bare in mind that the real php strptime() is capable of producing very different bullshit than mine is [if you want to see try this: var_dump(strptime("23:28:00", "%H:%M:00"))]: if (!function_exists('strptime')) { function strptime($str, $fmt) { $rtn = array( 'tm_sec' => 0, 'tm_min' => 0, 'tm_hour' => 0, 'tm_mday' => 0, 'tm_mon' => 0, 'tm_year' => 0, 'tm_wday' => 0, 'tm_yday' => 0, 'unparsed' => '' ); $valueBits = preg_split('#\W+#', $str); $formatBits = array(); preg_match_all('#%[^%]#', $fmt, $formatBits); foreach ($valueBits as $k => $v) { if (!$v || !isset($formatBits[0][$k])) continue; switch ($formatBits[0][$k]) { case '%d': case '%e': $rtn['tm_mday'] = intval($v); break; case '%m': $rtn['tm_mon'] = intval($v); break; case '%Y': case '%y': $i = intval($v); if ($i < 100/*strlen(trim($v)) == 2*/) $i += ($i > 29) ? 1900 : 2000; $rtn['tm_year'] = $i; break; case '%b': case '%B': /* // ER?? how to turn the month name // (given in locale X) back into a month number? // can't figure that out in less than 30 seconds, // so forget about it :-/ $rtn['tm_mon'] = ??; //*/ break; case '%H': case '%I': case '%k': case '%l': $rtn['tm_hour'] = intval($v); break; case '%P': case '%p': if (stristr($v, 'pm')) { $rtn['tm_hour'] += 12; } else if (stristr($v, 'am')) { $rtn['tm_hour'] -= 12; } break; case '%M': $rtn['tm_min'] = intval($v); break; } } return $rtn; } } -- PHP General Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php