#22635 [Com]: 1.1.1970 <> 24 hours in [gm]mktime
| From: | michael dot mauch at gmx dot de | Date: | Wed, 12 Mar 2003 18:32:29 +0000 |
| Subject: | #22635 [Com]: 1.1.1970 <> 24 hours in [gm]mktime | ||
| References: | 1 | Groups: | php.bugs |
| Request: | Send a blank email to php-bugs+get-35449@lists.php.net to get a copy of this message | ||
ID: 22635
Comment by: michael dot mauch at gmx dot de
Reported By: jsteen at timecom dot com
Status: Open
Bug Type: Date/time related
Operating System: win32
PHP Version: 4.3.1
New Comment:
Please read the fine manual. From
<http://www.php.net/manual/en/function.mktime.php>:
"on systems where time_t is a 32bit signed integer, as most common
today, the valid range for year is somewhere between 1902 and 2037".
If you are using values outside this range, you get undefined
behaviour.
Previous Comments:
------------------------------------------------------------------------
[2003-03-12 03:34:12] jsteen at timecom dot com
WE F...ING KNOW mktime, gmmktime etc. WORK FINE ON *NIX!
THIS IS A WIN REPORT!
[flame: on]
is it a new policy on bugs.php.net to NOT read post
headers/declarations, write "works fine with linux" as answer, and put
the bug on 'BOGUS'?
i'm among the many users that are pissed that all the
timestamp-functions are buggy on win. ok. fine. deal. but then please
take our reports seriously and put a proper comment in the man! i
really begin to wonder whether you're not just too lazy to seriously
deal with it if i get this sorts of answers.
[flame: off]
so why does 1.1.1970 not have 24h?
please omit any of the usual answers, like:
- works fine for linux
- blame MS
------------------------------------------------------------------------
[2003-03-11 11:15:13] sniper@php.net
Works fine with Linux.
------------------------------------------------------------------------
[2003-03-11 07:53:26] jsteen at timecom dot com
1.1.1970 does not have 24 hours!
---------------------------------------------
for ($i = 1 ; $i< 365; $i++){
$date = mktime(0,0,0,1,$i,1970);
$date1 = mktime(0,0,0,1,$i+1,1970);
echo "<br> $i: " .gmdate("Y m d", $date) . " ";
echo ($date1 - $date ) /3600 ." h";
}
---------------------------------------------
1: 23.0002777778 h
2: 1970 01 01 24 h
3: 1970 01 02 24 h
4: 1970 01 03 24 h
...
---------------------------------------------
for ($i = 1 ; $i< 365; $i++){
$date = gmmktime(0,0,0,1,$i,1970);
$date1 = gmmktime(0,0,0,1,$i+1,1970);
echo "<br> $i: " .gmdate("Y m d", $date) . " ";
echo ($date1 - $date ) /3600 ." h";
}
---------------------------------------------
1: 24.0002777778 h
2: 1970 01 02 24 h
3: 1970 01 03 24 h
4: 1970 01 04 24 h
...
---------------------------------------------
------------------------------------------------------------------------
--
Edit this bug report at http://bugs.php.net/?id=22635&edit=1