Bug #75975 [Com]: strftime prints current timezone instead of historical
Edit report at https://bugs.php.net/bug.php?id=75975&edit=1
ID: 75975
Comment by: anton at zebooka dot com
Reported by: anton at zebooka dot com
Summary: strftime prints current timezone instead of
historical
Status: Open
Type: Bug
Package: Date/time related
Operating System: macOS 10.13.3
PHP Version: 7.1.14
Block user comment: N
Private report: N
New Comment:
zebooka@zebooka-pro ~ $ uname -a
Darwin zebooka-pro.local 17.4.0 Darwin Kernel Version 17.4.0: Sun Dec 17 09:19:54 PST 2017;
root:xnu-4570.41.2~1/RELEASE_X86_64 x86_64
zebooka@zebooka-pro ~ $ php -r "date_default_timezone_set('Asia/Novosibirsk'); echo
strftime('%Y-%m-%d %H:%M:%S %z', strtotime('2015-11-15'));"
2015-11-15 00:00:00 +0700
zebooka@zebooka-pro ~ $ php -v
PHP 7.1.14 (cli) (built: Feb 2 2018 08:42:59) ( NTS )
Copyright (c) 1997-2018 The PHP Group
Zend Engine v3.1.0, Copyright (c) 1998-2018 Zend Technologies
Previous Comments:
------------------------------------------------------------------------
[2018-03-13 12:48:44] derick@php.net
I can't reproduce this:
[PHP: 7.1.15-dev ] derick@singlemalt:~ $ php -r
"date_default_timezone_set('Asia/Novosibirsk'); echo strftime('%Y-%m-%d %H:%M:%S
%z', strtotime('2015-11-15'));"
2015-11-15 00:00:00 +0600
------------------------------------------------------------------------
[2018-03-13 12:08:36] cmb@php.net
Oops, sorry, the OP was pretty clear about that.
------------------------------------------------------------------------
[2018-03-13 03:39:34] anton at zebooka dot com
Yes it is. But +0700 is output with strftime, while it should be +0600
------------------------------------------------------------------------
[2018-02-19 16:31:20] cmb@php.net
Isn't +0600 to be expected given the zdump of your database?
------------------------------------------------------------------------
[2018-02-17 05:56:53] anton at zebooka dot com
Description:
------------
This function outputs incorrect timezone.
Instead of outputting historical timezone for specified timestamp, it outputs current one.
TZ = Asia/Novosibirsk
We have changed timezone several times in Russia, Novosibirsk.
We dropped DST in 26 of March 2011 and added +1 hour permanently to TZ.
Then in 2014 government decided to move back to "winter time" and -1 hour from timezones.
Then in summer 2016 local goverments of several states moved back to "summer time" and
added +1 hour.
$ zdump -v /usr/share/zoneinfo/Asia/Novosibirsk | tail -n10
/usr/share/zoneinfo/Asia/Novosibirsk Sat Oct 30 19:59:59 2010 UTC = Sun Oct 31 02:59:59 2010 +07
isdst=1
/usr/share/zoneinfo/Asia/Novosibirsk Sat Oct 30 20:00:00 2010 UTC = Sun Oct 31 02:00:00 2010 +06
isdst=0
/usr/share/zoneinfo/Asia/Novosibirsk Sat Mar 26 19:59:59 2011 UTC = Sun Mar 27 01:59:59 2011 +06
isdst=0
/usr/share/zoneinfo/Asia/Novosibirsk Sat Mar 26 20:00:00 2011 UTC = Sun Mar 27 03:00:00 2011 +07
isdst=0
/usr/share/zoneinfo/Asia/Novosibirsk Sat Oct 25 18:59:59 2014 UTC = Sun Oct 26 01:59:59 2014 +07
isdst=0
/usr/share/zoneinfo/Asia/Novosibirsk Sat Oct 25 19:00:00 2014 UTC = Sun Oct 26 01:00:00 2014 +06
isdst=0
/usr/share/zoneinfo/Asia/Novosibirsk Sat Jul 23 19:59:59 2016 UTC = Sun Jul 24 01:59:59 2016 +06
isdst=0
/usr/share/zoneinfo/Asia/Novosibirsk Sat Jul 23 20:00:00 2016 UTC = Sun Jul 24 03:00:00 2016 +07
isdst=0
/usr/share/zoneinfo/Asia/Novosibirsk Mon Jan 18 03:14:07 2038 UTC = Mon Jan 18 10:14:07 2038 +07
isdst=0
/usr/share/zoneinfo/Asia/Novosibirsk Tue Jan 19 03:14:07 2038 UTC = Tue Jan 19 10:14:07 2038 +07
isdst=0
strftime() output current +0700 TZ for historical date in 2015 year, although date() function
returns correct TZ +0600.
Incorrect:
php > echo strftime('%Y-%m-%d %H:%M:%S %z', strtotime("2015-11-15"));
2015-11-15 00:00:00 +0700
Correct:
php > echo date('Y-m-d H:i:s O', strtotime("2015-11-15"));
2015-11-15 00:00:00 +0600
Test script:
---------------
echo strftime('%Y-%m-%d %H:%M:%S %z', strtotime("2015-11-15"));
Expected result:
----------------
2015-11-15 00:00:00 +0600
Actual result:
--------------
2015-11-15 00:00:00 +0700
------------------------------------------------------------------------
--
Edit this bug report at https://bugs.php.net/bug.php?id=75975&edit=1
Thread (8 messages)