Edit report at https://bugs.php.net/bug.php?id=81565&edit=1
ID: 81565
Updated by: derick@php.net
Reported by: andrea dot sprega at slope dot it
Summary: BC break: date parsing fails when provided with
timezones including seconds
-Status: Open
+Status: Wont fix
Type: Bug
Package: Date/time related
Operating System: Linux (The only I could try)
PHP Version: 8.0.12
Block user comment: N
Private report: N
New Comment:
I sort of see how this can be a BC break, but @cmb's example shows that it actually never
worked:
https://3v4l.org/BeEcm
Instead of truncating the seconds in the timezone to 00:49, it cut it to 00:00.
Although timelib does internally support sub-minute timezone offsets, PHP's data structures do
not. It did however not support parsing this information, which I have now added: https://github.com/derickr/timelib/commit/2788ebbedfd72bc5fe2d262893e7bf40ec1f5818
I don't really believe that silently truncating data on the PHP side is a good thing either. I
am going to close this issue, and if you have a better solution, please open a new one at https://github.com/php/php-src/issues.
Previous Comments:
------------------------------------------------------------------------
[2021-11-12 18:08:22] antonino dot spampinato86 at gmail dot com
$date =
\DateTime::createFromFormat(
'Y-m-d H:i:sO',
'0021-08-21 00:00:00+00:49:56'
);
var_dump($date); //timezone UTC or +00:00?. Error Real timezone is +2996
From php 8.0.10 DateTimeZone relative to fix bug #81097 (maybe this BC).
DateTime takes no seconds but uses the type +hh:mm for the time zone bug #70701
------------------------------------------------------------------------
[2021-11-12 16:15:41] antonino dot spampinato86 at gmail dot com
If it is a closed project, the programmer chooses.
I agree that if the "O" format can be expanded as input +004956 while output with hours
and minutes without semicolons.
the behavior prior to 8.0.10 is not correct, as I could not find it in the php documents you have to
decide how to expand the date "O" and this choice is made by the php team. Otherwise,
without any reference, can a user tell why the input is different from the output?
I'm normal user :)
------------------------------------------------------------------------
[2021-11-12 15:54:44] andrea dot sprega at slope dot it
But if the same code used to work (even though by approximating to a timezone without seconds) up to
PHP 8.0.9, and it stopped in 8.0.10, how can this not be considered a BC break?
The feature request would be to handle timezones with seconds, but TBH I don't think this is of
any interest to most users (at least not for me).
What it is reasonable to expect, in my opinion, is that PHP handles gracefully this kind of
timezones, given that they are technically and syntactically correct.
------------------------------------------------------------------------
[2021-11-12 15:46:13] antonino dot spampinato86 at gmail dot com
1) Format "O" Difference from Greenwich Mean Time (GMT) without the colon between hours
and minutes.
2) Problems with the transition period (2)a also this bug #80963 getTransitions does not restore the
correct values ââexcept the date). 2)b example timezone America/Toronto progress of
+00:15:32 in php after 7.3.1 https://3v4l.org/CY4F7 related to
bug #81562
3) You must first solve problem number two and create a new format that accepts hours, minutes,
seconds with or without a semicolon otherwise the behavior of php 8.0.10 is correct (read
DateTime::format for "O"). The ticket is a feature request, this is my thought since if it
does not exist you cannot merge, if php creates code without modifying the format historical.
@derick behavior we go to the correct.
For Europe/Rome read RMT timezone (49*60) + 56.
------------------------------------------------------------------------
[2021-11-02 13:29:37] alec at alec dot pl
https://www.php.net/manual/en/datetime.createfromformat.php
where the timezone format is described.
------------------------------------------------------------------------
The remainder of the comments for this report are too long. To view
the rest of the comments, please view the bug report online at
https://bugs.php.net/bug.php?id=81565
--
Edit this bug report at https://bugs.php.net/bug.php?id=81565&edit=1