note 62180 deleted from function.strtotime by derick
| From: | derick@php.net | Date: | Sun, 08 Apr 2007 13:05:08 +0000 |
| Subject: | note 62180 deleted from function.strtotime by derick | ||
| References: | 1 | Groups: | php.notes |
| Request: | Send a blank email to php-notes+get-125217@lists.php.net to get a copy of this message | ||
Note Submitter: Jae Lee
----
To parse UK format of date, just call parseDate( "10/2/2006", "%d/%m/%Y" )
#-----------------------------------------------#
# Purpose : Returns a timestamp from a string based on the given format and default timezone if
it's ambiguous.
#
# Supported formats
#
# %Y - year as a decimal number including the century
# %m - month as a decimal number (range 01 to 12)
# %d - day of the month as a decimal number (range 01 to 31)
#
# %H - hour as a decimal number using a 24-hour clock (range 00 to 23)
# %M - minute as a decimal number
#
function parseDate( $date, $format ) {
// Builds up date pattern from the given $format, keeping delimiters in place.
if( !preg_match_all( "/%([YmdHMp])([^%])*/", $format, $formatTokens, PREG_SET_ORDER ) ) {
return false;
}
foreach( $formatTokens as $formatToken ) {
$delimiter = preg_quote( $formatToken[2], "/" );
$datePattern .= "(.*)".$delimiter;
}
// Splits up the given $date
if( !preg_match( "/".$datePattern."/", $date, $dateTokens) ) {
return false;
}
$dateSegments = array();
for($i = 0; $i < count($formatTokens); $i++) {
$dateSegments[$formatTokens[$i][1]] = $dateTokens[$i+1];
}
// Reformats the given $date into US English date format, suitable for strtotime()
if( $dateSegments["Y"] && $dateSegments["m"] &&
$dateSegments["d"] ) {
$dateReformated =
$dateSegments["Y"]."-".$dateSegments["m"]."-".$dateSegments["d"];
}
else {
return false;
}
if( $dateSegments["H"] && $dateSegments["M"] ) {
$dateReformated .= "
".$dateSegments["H"].":".$dateSegments["M"];
}
return strtotime( $dateReformated );
}