Bug #75975 [Opn->Fbk]: strftime prints current timezone instead of historical

From: Date: Mon, 19 Feb 2018 16:31:21 +0000
Subject: Bug #75975 [Opn->Fbk]: strftime prints current timezone instead of historical
References: 1  Groups: php.bugs 
Request: Send a blank email to php-bugs+get-214040@lists.php.net to get a copy of this message
Edit report at https://bugs.php.net/bug.php?id=75975&edit=1

 ID:                 75975
 Updated by:         cmb@php.net
 Reported by:        anton at zebooka dot com
 Summary:            strftime prints current timezone instead of
                     historical
-Status:             Open
+Status:             Feedback
 Type:               Bug
 Package:            Date/time related
 Operating System:   macOS 10.13.3
 PHP Version:        7.1.14
-Assigned To:        
+Assigned To:        cmb
 Block user comment: N
 Private report:     N

 New Comment:

Isn't +0600 to be expected given the zdump of your database?


Previous Comments:
------------------------------------------------------------------------
[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)

« previous php.bugs (#214040) next »