Deprecation of ext/date ISO8061 constants

  115955
September 5, 2021 06:01 ddziaduch@icloud.com (Damian Dziaduch)
Hello internals!

This is my first time writing here :)

The deprecation was originally added in RFC Deprecations for PHP 8.1, but in a later stage dropped entirely:
https://wiki.php.net/rfc/deprecations_php_8_1?do=diff&rev2%5B0%5D=1623754059&rev2%5B1%5D=1623759320&difftype=sidebyside

It was already discussed on this mailing list:
> List: php-internals > Subject: Re: [PHP-DEV] [RFC] Deprecations for PHP 8.1 > From: Nikita Popov > Date: 2021-06-15 12:23:50 > Message-ID: CAF+90c8wht+LpERZxj-XuY4sAYek8fH9hH_fc+JVZYg_yiAMpw () mail ! gmail ! com > > On Tue, Jun 15, 2021 at 12:48 PM Hans Henrik Bergan <divinity76@gmail.com> > wrote: > >> i don't like this part of the RFC: > > >>> There's a number of bug reports related to this. From what I understand, >>> the core problem here is not that the ISO8601 format is *wrong*, it's just >>> one of multiple legal ISO-8601 formats. As DateTime formats always refer to >>> a specific format, not a set of multiple possible ones, there doesn't seem >>> to be anything actionable here. >> >> - this is wrong, DateTime::ISO8601 *is* illegal in ISO8601. >> quoting ISO8601:2004 section 4.3.3: >> >>> For reduced accuracy, decimal or expanded representations of date and >>> time of day, any of the representations in 4.1.2 (calendar dates), 4.1.3 >>> (ordinal dates) or 4.1.4 (week dates) followed immediately by the time >>> designator [T] may be combined with any of the representations in 4.2.2.2 >>> through 4.2.2.4 (local time), 4.2.4 (UTC of day) or 4.2.5.2 (local time and >>> the difference from UTC) provided that (...skipped stuff...) d) the >>> expression shall either be completely in basic format, in which case the >>> minimum number of separators necessary for the required expression is used, >>> or completely in extended format, in which case additional separators shall >>> be used in accordance with 4.1 and 4.2. >> >> DateTime::ISO8601 does exactly what part "d" says isn't legal, >> 1970-01-01T01:00:00 is extended format, and +0100 is basic format, breaking >> the "the expression shall either be completely in basic format, in which >> case the minimum number of separators necessary for the required expression >> is used, or completely in extended format" -part. " 1970-01-01T01:00:00" is >> legal extended format but illegal basic format, and "+0100" is legal basic >> format but illegal extended format, and mixing the 2 isn't legal. > > Thanks for the reference. I've removed the mention of DateTime::ISO8601 > from the RFC to make sure that the RFC text doesn't make any incorrect > statements. Not going to include a deprecation proposal as part of this RFC > though -- from past discussions, the topic was controversial, so I don't > want to include it this late in the process.
I do understand why it was dropped entirely from RFC, but I do not understand this part:
> the topic was controversial
Why is that? I did not found any information regarding this one on internals mailing list. Kind regards.