Bug #74232 [Fbk->Nab]: strtotime different output from centos and ubuntu
| From: | heiglandreas@php.net | Date: | Sun, 12 Mar 2017 09:39:35 +0000 |
| Subject: | Bug #74232 [Fbk->Nab]: strtotime different output from centos and ubuntu | ||
| References: | 1 | Groups: | php.bugs |
| Request: | Send a blank email to php-bugs+get-207805@lists.php.net to get a copy of this message | ||
Edit report at https://bugs.php.net/bug.php?id=74232&edit=1
ID: 74232
Updated by: heiglandreas@php.net
Reported by: 729021170 at qq dot com
Summary: strtotime different output from centos and ubuntu
-Status: Feedback
+Status: Not a bug
Type: Bug
Package: Date/time related
Operating System: centos
PHP Version: 5.6.30
Block user comment: N
Private report: N
New Comment:
You stumbled over one of these strange offset issues in the TZ-Database: Have a look at https://github.com/eggert/tz/blob/68efd697628085f6461f66d8429431175f91c09a/asia#L395
- that adds an offset of 8 hours 5 minutes and 57 seconds to UTC on the 1st of january 1928 at
exactly 00:00:00. So 1927-12-31 23:54:02 needs to be followed by 1928-1-1 00:00:00 which - due to it
being a time before the epoch - will be calculated back to a timestamp that seems to be weird.
So it's not a bug in PHP as PHP is doing the calculations absolutely correct (hence I'm
closing this). But it's an issue in the Timezone-Database that has been altered with https://github.com/eggert/tz/commit/15b01c042afa770acd5068054c50e7c5c663cbd2
in 2014.
Due to your server using a rather outdated Timezone-Database and your dev-machine using the systems
(up to date) version you get this mismatch. You should update your timezonedb on the server by
either updating the PHP-Version or at least by updating the timezonedb using https://pecl.php.net/package/timezonedb
Previous Comments:
------------------------------------------------------------------------
[2017-03-12 02:29:01] 729021170 at qq dot com
The Server
PHP 5.5.9 (cli) (built: Dec 7 2015 15:37:14)
Copyright (c) 1997-2014 The PHP Group
Zend Engine v2.5.0, Copyright (c) 1998-2014 Zend Technologies
with Zend OPcache v7.0.3, Copyright (c) 1999-2014, by Zend Technologies
date/time support => enabled
"Olson" Timezone Database Version => 2013.9
Timezone Database => internal
Default timezone => Asia/Shanghai
date.timezone => Asia/Shanghai => Asia/Shanghai
The Local
PHP 7.0.15-0ubuntu0.16.04.4 (cli) ( NTS )
Copyright (c) 1997-2017 The PHP Group
Zend Engine v3.0.0, Copyright (c) 1998-2017 Zend Technologies
with Zend OPcache v7.0.15-0ubuntu0.16.04.4, Copyright (c) 1999-2017, by Zend Technologies
date/time support => enabled
"Olson" Timezone Database Version => 0.system
Timezone Database => internal
Default timezone => Asia/Shanghai
date.timezone => Asia/Shanghai => Asia/Shanghai
my doubt is why there is chasm between 1927-12-31 23:54:02(1325491915) and 1927-12-31
23:54:03(1325491557)
------------------------------------------------------------------------
[2017-03-11 22:07:55] heiglandreas@php.net
I can't see which timezone is set on the two servers. 358 seconds difference look like some
issue with a timezone.
Please check:
* Timezone on the servers (date_default_timezone_get())
* Which version of the timezonedb is installed (and linked to PHP) on the servers (php -i | grep
Olson)
------------------------------------------------------------------------
[2017-03-11 21:07:23] rasmus@php.net
Did you build both yourself?
Note that some distros link PHP against their own timezone db and if it differs from the one we
bundle you will see results like this. If you build the same version of PHP yourself on both systems
you should see the same result.
------------------------------------------------------------------------
[2017-03-10 05:51:53] 729021170 at qq dot com
Description:
------------
the above is centos, the below is ubuntu, strtotime('1927-12-31 23:54:02') is different
(-1325491915, -1325491558)
Architecture: x86_64
CPU op-mode(s): 32-bit, 64-bit
Byte Order: Little Endian
CPU(s): 4
On-line CPU(s) list: 0-3
Thread(s) per core: 1
Core(s) per socket: 1
Socket(s): 4
NUMA node(s): 1
Vendor ID: GenuineIntel
CPU family: 6
Model: 63
Stepping: 2
CPU MHz: 2400.058
BogoMIPS: 4800.11
Hypervisor vendor: Xen
Virtualization type: full
L1d cache: 32K
L1i cache: 32K
L2 cache: 256K
L3 cache: 15360K
NUMA node0 CPU(s): 0-3
1927-12-31 23:54:00 -1325491917
1927-12-31 23:54:01 -1325491916
1927-12-31 23:54:02 -1325491915
1927-12-31 23:54:03 -1325491557
1927-12-31 23:54:04 -1325491556
1927-12-31 23:54:05 -1325491555
1927-12-31 23:54:06 -1325491554
1927-12-31 23:54:07 -1325491553
1927-12-31 23:54:08 -1325491552
1927-12-31 23:54:09 -1325491551
Architecture: x86_64
CPU è¿è¡æ¨¡å¼ï¼ 32-bit, 64-bit
Byte Order: Little Endian
CPU(s): 4
On-line CPU(s) list: 0-3
æ¯ä¸ªæ ¸ççº¿ç¨æ°ï¼ 2
æ¯ä¸ªåº§çæ ¸æ°ï¼ 2
Socket(s): 1
NUMA èç¹ï¼ 1
åå IDï¼ GenuineIntel
CPU ç³»åï¼ 6
åå·ï¼ 78
Model name: Intel(R) Core(TM) i5-6200U CPU @ 2.30GHz
æ¥è¿ï¼ 3
CPU MHzï¼ 429.562
CPU max MHz: 2800.0000
CPU min MHz: 400.0000
BogoMIPS: 4800.44
èæåï¼ VT-x
L1d ç¼åï¼ 32K
L1i ç¼åï¼ 32K
L2 ç¼åï¼ 256K
L3 ç¼åï¼ 3072K
NUMA node0 CPU(s): 0-3
1927-12-31 23:54:00 -1325491560
1927-12-31 23:54:01 -1325491559
1927-12-31 23:54:02 -1325491558
1927-12-31 23:54:03 -1325491557
1927-12-31 23:54:04 -1325491556
1927-12-31 23:54:05 -1325491555
1927-12-31 23:54:06 -1325491554
1927-12-31 23:54:07 -1325491553
1927-12-31 23:54:08 -1325491552
1927-12-31 23:54:09 -1325491551
Test script:
---------------
<?php
$start = strtotime('1927-12-31 23:54:00');
for ($i = 0; $i < 10; $i++) {
$tmp = strtotime("+$i seconds", $start);
echo date("Y-m-d H:i:s", $tmp) . " " . $tmp . "\n";
}
------------------------------------------------------------------------
--
Edit this bug report at https://bugs.php.net/bug.php?id=74232&edit=1