php.net |  support |  documentation |  report a bug |  advanced search |  search howto |  statistics |  random bug |  login
Bug #77896 DateInterval::createFromDateString() no longer supports relative formats
Submitted: 2019-04-15 12:59 UTC Modified: 2021-04-06 19:04 UTC
Votes:2
Avg. Score:4.0 ± 1.0
Reproduced:2 of 2 (100.0%)
Same Version:1 (50.0%)
Same OS:0 (0.0%)
From: renan-sub at protonmail dot com Assigned: derick (profile)
Status: Not a bug Package: Date/time related
PHP Version: 7.3.4 OS:
Private report: No CVE-ID: None
 [2019-04-15 12:59 UTC] renan-sub at protonmail dot com
Description:
------------
When calling DateInterval::createFromDateString() with "6 years and 4 months" as argument, it generates a warning. (See https://3v4l.org/sQjh2)

Note: as a workaround (for the case mentioned) I'm using new \DateInterval('P6Y4M')

Test script:
---------------
<?php

var_dump(\DateInterval::createFromDateString('6 years and 4 months'));


Expected result:
----------------
object(DateInterval)#1 (16) {
    ["y"]=> int(6)
    ["m"]=> int(4)
    ["d"]=> int(0)
    ["h"]=> int(0)
    ["i"]=> int(0)
    ["s"]=> int(0)
    ["f"]=> float(0)
    ["weekday"]=> int(0)
    ["weekday_behavior"]=> int(0)
    ["first_last_day_of"]=> int(0)
    ["invert"]=> int(0)
    ["days"]=> bool(false)
    ["special_type"]=> int(0)
    ["special_amount"]=> int(0)
    ["have_weekday_relative"]=> int(0)
    ["have_special_relative"]=> int(0)
}


Actual result:
--------------
Warning: DateInterval::createFromDateString(): Unknown or bad format (6 years and 4 months) at position 8 (a)

Patches

Pull Requests

History

AllCommentsChangesGit/SVN commitsRelated reports
 [2019-04-15 13:02 UTC] nikic@php.net
-Assigned To: +Assigned To: derick
 [2019-04-15 13:06 UTC] renan-sub at protonmail dot com
It also fails in 7.2.17
 [2019-04-15 15:48 UTC] requinix@php.net
"and" (where the parsing fails) should probably then be added to the docs as a supported/ignored word.
 [2019-04-18 10:02 UTC] cmb@php.net
It's not particularly about "and", see <https://3v4l.org/cVbcv>.
 [2019-04-19 08:12 UTC] a at b dot c dot de
But leaving it out entirely is fine:

https://3v4l.org/cSDRW
 [2021-04-06 19:04 UTC] derick@php.net
-Status: Assigned +Status: Not a bug
 [2021-04-06 19:04 UTC] derick@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

"and" in between was never supported here.
 
PHP Copyright © 2001-2024 The PHP Group
All rights reserved.
Last updated: Thu Nov 07 17:01:31 2024 UTC