Bug #81562 [Opn->Ver]: DateTime returns incorrect time on a very specific date (1895-01-01)

From: Date: Fri, 29 Oct 2021 11:29:08 +0000
Subject: Bug #81562 [Opn->Ver]: DateTime returns incorrect time on a very specific date (1895-01-01)
References: 1  Groups: php.bugs 
Request: Send a blank email to php-bugs+get-237426@lists.php.net to get a copy of this message
Edit report at https://bugs.php.net/bug.php?id=81562&edit=1

 ID:                 81562
 Updated by:         cmb@php.net
 Reported by:        abrlam at yahoo dot com
 Summary:            DateTime returns incorrect time on a very specific
                     date (1895-01-01)
-Status:             Open
+Status:             Verified
 Type:               Bug
 Package:            Date/time related
 Operating System:   Ubuntu 18.04.4 LTS
 PHP Version:        Irrelevant
 Block user comment: N
 Private report:     N

 New Comment:

Confirmed: <https://3v4l.org/NLAnOY>.

This is apparently caused by the uncommon timezone transition on
that particular date[1], where the minutes and seconds are not
properly handled.

[1] <https://3v4l.org/VEUib>


Previous Comments:
------------------------------------------------------------------------
[2021-10-28 18:32:33] abrlam at yahoo dot com

Description:
------------
When time zone is set as America/Toronto, DateTime returns incorrect time on a very specific date
(1895-01-01).

This happens in PHP version 7.4.20 and possibly in earlier versions (>=7.3.5).

Test script:
---------------
//fails in 1895-01-01
for($i = 1890; $i <= 1910 ; $i++) {
	$date = new DateTime( $i. '-01-01', new DateTimeZone('America/Toronto'));
	echo $date->format('Y-m-d H:i:s') . "<br />";
}

Expected result:
----------------
For 1895-01-01, it should be 1895-01-01 00:00:00 instead of 1895-01-01 00:17:32.

Actual result:
--------------
1890-01-01 00:00:00
1891-01-01 00:00:00
1892-01-01 00:00:00
1893-01-01 00:00:00
1894-01-01 00:00:00
1895-01-01 00:17:32 <========== Expected value: 1895-01-01 00:00:00
1896-01-01 00:00:00
1897-01-01 00:00:00
1898-01-01 00:00:00
1899-01-01 00:00:00
1900-01-01 00:00:00
1901-01-01 00:00:00
1902-01-01 00:00:00
1903-01-01 00:00:00
1904-01-01 00:00:00
1905-01-01 00:00:00
1906-01-01 00:00:00
1907-01-01 00:00:00
1908-01-01 00:00:00
1909-01-01 00:00:00
1910-01-01 00:00:00


------------------------------------------------------------------------



--
Edit this bug report at https://bugs.php.net/bug.php?id=81562&edit=1


Thread (5 messages)

« previous php.bugs (#237426) next »