note 38922 added to function.date
| From: | rickenmeer at hotmail dot com | Date: | Mon, 12 Jan 2004 12:52:23 +0000 |
| Subject: | note 38922 added to function.date | ||
| Groups: | php.notes | ||
| Request: | Send a blank email to php-notes+get-63346@lists.php.net to get a copy of this message | ||
An override for date () using mapping, allowing calculation of daylight saving times, weeknumbers,
etc.
<?PHP
function &date ($format = "", $timestamp = false)
{
if ($timestamp >= 0 && $timestamp <= 2147480047)
{ // between 1 Jan 1970 00:00:00 and 19 Jan 2038 03:14:07 GMT
return date ($format, $timestamp);
}
$mappings = Array (
Array ("start" => 1902, "end" => 1951, "map" => 1986), //
1902-1951 = 1986-2035
Array ("start" => 1952, "end" => 1969, "map" => 1980), //
1952-1969 = 1980-1997
);
$temp = $timestamp;
if ($timestamp < 0)
{
$year = 1969;
while ($temp < 0)
{
$days = ($year % 4 == 0 && ($year % 100 > 0 || $year % 400 == 0)) ? 366 : 365;
$temp += $days * 86400;
$year--;
}
}
else // if ($timestamp > 2147480047)
{
$year = 2038;
while ($temp > 0)
{
$days = ($year % 4 == 0 && ($year % 100 > 0 || $year % 400 == 0)) ? 366 : 365;
$temp -= $days * 86400;
$year++;
}
}
foreach ($mappings as $mapping)
if ($year >= $mapping["start"] && $year <= $mapping["end"])
{
$format =& str_replace (Array ("y", "Y"), Array (substr ($year, -2),
$year), $format);
return date ($format, $temp + mktime (0, 0, 0, 1, 1, $mapping["map"]));
}
return "date (): Year not mapped yet: " . $year;
}
?>
----
Manual Page -- http://www.php.net/manual/en/function.date.php
Edit -- http://master.php.net/manage/user-notes.php?action=edit+38922
Delete -- http://master.php.net/manage/user-notes.php?action=delete+38922&report=yes
Reject -- http://master.php.net/manage/user-notes.php?action=reject+38922&report=yes
Search -- http://master.php.net/manage/user-notes.php