php.net |  support |  documentation |  report a bug |  advanced search |  search howto |  statistics |  random bug |  login
Bug #81562 DateTime returns incorrect time on a very specific date (1895-01-01)
Submitted: 2021-10-28 18:32 UTC Modified: 2021-10-29 11:29 UTC
From: abrlam at yahoo dot com Assigned:
Status: Verified Package: Date/time related
PHP Version: Irrelevant OS: Ubuntu 18.04.4 LTS
Private report: No CVE-ID: None
View Add Comment Developer Edit
Welcome! If you don't have a Git account, you can't do anything here.
You can add a comment by following this link or if you reported this bug, you can edit this bug over here.
(description)
Block user comment
Status: Assign to:
Package:
Bug Type:
Summary:
From: abrlam at yahoo dot com
New email:
PHP Version: OS:

 

 [2021-10-28 18:32 UTC] 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

Patches

Add a Patch

Pull Requests

Add a Pull Request

History

AllCommentsChangesGit/SVN commitsRelated reports
 [2021-10-29 11:29 UTC] cmb@php.net
-Status: Open +Status: Verified
 [2021-10-29 11:29 UTC] cmb@php.net
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>
 
PHP Copyright © 2001-2022 The PHP Group
All rights reserved.
Last updated: Tue Jan 25 09:03:34 2022 UTC