Edit report at https://bugs.php.net/bug.php?id=51950&edit=1
ID: 51950
Updated by: cmb@php.net
Reported by: jmf at durcommefaire dot net
Summary: DateTime does not handle decimal fractions of ISO
8601 format
Status: Not a bug
Type: Bug
Package: Date/time related
Operating System: Ubuntu 10.04
PHP Version: 5.3.2
Assigned To: cmb
Block user comment: N
Private report: N
New Comment:
> PHP is told to parse a valid ISO8601 date
No. It is told to use the DateTime::ISO8601 format,
and the docs[1] state:
| This format is not compatible with ISO-8601, but is left this
| way for backward compatibility reasons. Use DateTime::ATOM or
| DATE_ATOM for compatibility with ISO-8601 instead.
If you think DateTime::ISO8601 should be changed for PHP 8, please
pursue the RFC process[2].
[1] <https://www.php.net/manual/en/class.datetimeinterface.php#datetime.constants.iso8601>
[2] <https://wiki.php.net/rfc/howto>
Previous Comments:
------------------------------------------------------------------------
[2019-07-16 08:59:29] divinity76 at gmail dot com
@CMB you're wrong imo. in the sample code provided, PHP is told to parse a valid ISO8601 date,
and PHP fails to do so. that's a bug in my eyes. please explain how this is not a bug, is PHP
not supposed to parse a ISO8601 date when told to do so?
------------------------------------------------------------------------
[2018-12-05 13:40:25] christophe at gosiau dot be
I would like to refer to this Wikipedia article:
https://en.wikipedia.org/wiki/ISO_8601
It states:
A decimal mark, either a comma or a dot (without any preference as stated in resolution 10 of the
22nd General Conference CGPM in 2003,[14] but with a preference for a comma according to ISO
8601:2004)[15] is used as a separator between the time element and its fraction.
------------------------------------------------------------------------
[2016-08-07 14:51:18] cmb@php.net
Thank you for taking the time to write to us, but this is not
a bug. Please double-check the documentation available at
http://www.php.net/manual/ and the instructions on how to
report
a bug at http://bugs.php.net/how-to-report.php
DateTime::ISO8601 is defined to "Y-m-d\TH:i:sO"[1], so obviously
it doesn't accept microsecond fractions. If you expect these to be
given, use another format specifier, see <https://3v4l.org/ADn0l>.
If you want to accept different ISO-8601 date/time formats,
don't use date_create_from_format(), but rather date_create(),
see <https://3v4l.org/c879B>.
[1] <http://php.net/manual/en/class.datetime.php>
------------------------------------------------------------------------
[2015-12-01 09:28:51] seb at rootsandrain dot com
Still broken in PHP7:
https://3v4l.org/aKNVI
------------------------------------------------------------------------
[2015-06-25 05:05:02] broncha at rajesharma dot com
Confirmed on Mac. PHP version 5.5.26
------------------------------------------------------------------------
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=51950
--
Edit this bug report at https://bugs.php.net/bug.php?id=51950&edit=1