note 107354 modified in function.strtotime by danbrown
| From: | danbrown@php.net | Date: | Thu, 10 May 2012 21:22:58 +0000 |
| Subject: | note 107354 modified in function.strtotime by danbrown | ||
| References: | 1 | Groups: | php.notes |
| Request: | Send a blank email to php-notes+get-187881@lists.php.net to get a copy of this message | ||
this function allow the use of native strtotime with dates before 1970 (and before 1900) even in
Windows <?php function
safe_strtotime($string) { 	if(!preg_match("/\\d{4}/",
$string, $match)) return null; //year must be in YYYY form 	$year =
intval($match[0]);//converting the year to integer 	if($year >=
1970) return date("Y-m-d", strtotime($string));//the year is after 1970 - no
problems even for Windows 	if(stristr(PHP_OS, "WIN")
&& !stristr(PHP_OS, "DARWIN")) //OS seems to be Windows, not Unix
nor Mac 	{ 		$diff = 1975 -
$year;//calculating the difference between 1975 and the
year 		$new_year = $year + $diff;//year + diff = new_year will be for
sure > 1970 		$new_date = date("Y-m-d",
strtotime(str_replace($year, $new_year, $string)));//replacing the year with the new_year, try
strtotime, rendering the date 		return str_replace($new_year, $year,
$new_date);//returning the date with the correct
year 	} 	return date("Y-m-d",
strtotime($string));//do normal strtotime } ?>
--was--
//this function allow the use of native strtotime with dates before 1970 (and before 1900) even in
Windows
function safe_strtotime($string)
{
if(!preg_match("/\d{4}/", $string, $match)) return null; //year must be in YYYY form
$year = intval($match[0]);//converting the year to integer
if($year >= 1970) return date("Y-m-d", strtotime($string));//the year is after 1970 -
no problems even for Windows
if(stristr(PHP_OS, "WIN") && !stristr(PHP_OS, "DARWIN")) //OS seems to
be Windows, not Unix nor Mac
{
$diff = 1975 - $year;//calculating the difference between 1975 and the year
$new_year = $year + $diff;//year + diff = new_year will be for sure > 1970
$new_date = date("Y-m-d", strtotime(str_replace($year, $new_year, $string)));//replacing
the year with the new_year, try strtotime, rendering the date
return str_replace($new_year, $year, $new_date);//returning the date with the correct year
}
return date("Y-m-d", strtotime($string));//do normal strtotime
}
http://php.net/manual/en/function.strtotime.php