note 38922 added to function.date

From: 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

« previous php.notes (#63346) next »