php.net |  support |  documentation |  report a bug |  advanced search |  search howto |  statistics |  random bug |  login
Bug #51950 DateTime does not handle decimal fractions of ISO 8601 format
Submitted: 2010-05-30 19:56 UTC Modified: 2016-08-07 14:51 UTC
Votes:131
Avg. Score:4.3 ± 0.8
Reproduced:119 of 120 (99.2%)
Same Version:24 (20.2%)
Same OS:18 (15.1%)
From: jmf at durcommefaire dot net Assigned: cmb
Status: Not a bug Package: Date/time related
PHP Version: 5.3.2 OS: Ubuntu 10.04
Private report: No CVE-ID:
Password:
Status:
Package:
Bug Type:
Summary:
From: jmf at durcommefaire dot net
New email:
PHP Version: OS:

 

 [2010-05-30 19:56 UTC] jmf at durcommefaire dot net
Description:
------------
DateTime does not handle decimal fractions of ISO 8601 format (cf. http://en.wikipedia.org/wiki/ISO_8601#Times)

This value has decimal fraction and is not recognized by DateTime :

$dateTime = DateTime::createFromFormat(
    DateTime::ISO8601,
    '2009-04-16T12:07:23.596Z'
);
// bool(false)
var_dump($dateTime);


The same value without the decimal fraction is recognized :

$dateTime = DateTime::createFromFormat(
    DateTime::ISO8601,
    '2009-04-16T12:07:23Z'
);
// object(DateTime)#2 (3) { ["date"]=>  string(19) "2009-04-16 12:07:23" ["timezone_type"]=>  int(2) ["timezone"]=>  string(1) "Z" }
var_dump($dateTime);


Patches

Add a Patch

Pull Requests

Add a Pull Request

History

AllCommentsChangesGit/SVN commitsRelated reports
 [2010-06-06 22:25 UTC] dtajchreber@php.net
-Assigned To: +Assigned To: deric
 [2010-06-06 22:25 UTC] dtajchreber@php.net
-Assigned To: deric +Assigned To: derick
 [2014-10-15 14:25 UTC] h dot kraal at tiw dot nl
This 4+ years old bug is still present in todays systems:
Ubuntu 10.04 / PHP 5.3.2-1ubuntu4.27
Ubuntu 12.04 / PHP 5.3.10-1ubuntu3.14
Ubuntu 14.04 / PHP 5.5.9-1ubuntu4.4
 [2014-11-12 23:48 UTC] dev at jonathanlidbeck dot com
This bug is present in PHP 5.5 for Windows.
 [2015-06-25 05:05 UTC] broncha at rajesharma dot com
Confirmed on Mac. PHP version 5.5.26
 [2015-12-01 09:28 UTC] seb at rootsandrain dot com
Still broken in PHP7:

https://3v4l.org/aKNVI
 [2016-08-07 14:51 UTC] cmb@php.net
-Status: Assigned +Status: Not a bug -Assigned To: derick +Assigned To: cmb
 [2016-08-07 14:51 UTC] 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>
 
PHP Copyright © 2001-2017 The PHP Group
All rights reserved.
Last updated: Tue Aug 29 15:01:52 2017 UTC