Req->Doc #81319 [Opn->Ver]: Unfortunate example on time() man page
| From: | cmb@php.net | Date: | Mon, 02 Aug 2021 13:37:27 +0000 |
| Subject: | Req->Doc #81319 [Opn->Ver]: Unfortunate example on time() man page | ||
| References: | 1 | Groups: | php.doc.bugs |
| Request: | Send a blank email to doc-bugs+get-19015@lists.php.net to get a copy of this message | ||
Edit report at https://bugs.php.net/bug.php?id=81319&edit=1
ID: 81319
Updated by: cmb@php.net
Reported by: will dot duncan dot nn at gmail dot com
-Summary: Incredibly wrong and stupid note is highly ranked on
time() docs
+Summary: Unfortunate example on time() man page
-Status: Open
+Status: Verified
-Type: Feature/Change Request
+Type: Documentation Problem
Package: Website problem
PHP Version: Irrelevant
Block user comment: N
Private report: N
New Comment:
Yeah, right, the example #1 on that page is bad. Using gmdate()
instead of date() would be an improvement, but still there would
be issues with leap seconds (which UTC supports). And I agree
that such date/time calculations are generally problematic, if not
outright bad, so the user note makes sense.
Previous Comments:
------------------------------------------------------------------------
[2021-08-02 12:59:31] antonino dot spampinato86 at gmail dot com
It means if your local time is different from UTC (UTC+00:00/GMT+0000) you have to adjust the time
zone to see the date in UTC, directly with the date function and without changing the timezone.
Without using native php functions, including gmdate, simple arithmetic is not recommended. time()
currently returns an integer decimal but if you go too far or too far back you may also see a float
as it is not covered by the operating system's 32 BIT range. https://www.php.net/manual/en/datetime.gettimestamp.php
This is an example I hope it helps you
date_default_timezone_set("Europe/Helsinki");
$time = time(); //GMT+0000
function conversion_offset($time) {
$a = date('Y-m-d H:i:s Z', $time);
$len = strpos($a, ':');
$datetime = substr($a, 0, ($len + (6)));
$b = strtotime($datetime, $time);
$offset = (int) substr($a, ($len + (7)));
if($time > 0 && $offset <= 0)
$result = $time - ($offset);
elseif($time > 0 && $offset >= 0)
$result = $time + $offset;
elseif($time < 0 && $offset >= 0)
$result = $time + $offset;
else
$result = $time - ($offset);
return $result;
}
$time = strtotime('-1980-04-03 00:00:00');
$a = date('Y-m-d H:i:s Z', $time);
$b = gmdate('Y-m-d H:i:s Z', $time);
$date = date('Y-m-d H:i:s Z', conversion_offset($time));
var_dump($time, 'gmdate: ' . $b, 'conversion_offset: ' . $date, 'Local
time: ' . $a);
------------------------------------------------------------------------
[2021-08-01 14:42:42] will dot duncan dot nn at gmail dot com
Description:
------------
https://www.php.net/manual/en/function.time.php#118876
The user is implying that UTC is affected by daylight saving, which is obviously not true https://en.wikipedia.org/wiki/Coordinated_Universal_Time
The user is implying that "not every day has 24 hours," however, for UTC, which is used
for the time() function, this is never the case. Under "Mechanism" on the
Wikipedia article, you can easily find the following quote: "Each day contains 24 hours and
each hour contains 60 minutes."
I am reporting this as this is the #2 most upvoted note for this page. It is incredibly misleading
and inaccurate. Notes like this one can greatly damage new developers browsing the documentation,
especially when said note appears on the top.
------------------------------------------------------------------------
[2021-08-01 14:41:14] will dot duncan dot nn at gmail dot com
Description:
------------
https://www.php.net/manual/en/function.time.php#118876
The use is implying that UTC is affected by daylight saving, which is obviously not true https://en.wikipedia.org/wiki/Coordinated_Universal_Time
The user is implying that "not every day has 24 hours," however, for UTC, which is used
for the time() function, this is never the case. Under "Mechanism" on the
Wikipedia article, you can easily find the following quote: "Each day contains 24 hours and
each hour contains 60 minutes."
I am reporting this as this is the #2 most upvoted note for this page. It is incredibly misleading
and inaccurate. Notes like this one can greatly damage new developers browsing the documentation,
especially when said note appears on the top.
------------------------------------------------------------------------
--
Edit this bug report at https://bugs.php.net/bug.php?id=81319&edit=1