Req #61366 [Opn->Csd]: DateInterval should support weeks and days combined
| From: | cmb@php.net | Date: | Thu, 28 Oct 2021 16:20:08 +0000 |
| Subject: | Req #61366 [Opn->Csd]: DateInterval should support weeks and days combined | ||
| References: | 1 | Groups: | php.bugs |
| Request: | Send a blank email to php-bugs+get-237421@lists.php.net to get a copy of this message | ||
Edit report at https://bugs.php.net/bug.php?id=61366&edit=1
ID: 61366
Updated by: cmb@php.net
Reported by: evert at rooftopsolutions dot nl
Summary: DateInterval should support weeks and days combined
-Status: Open
+Status: Closed
Type: Feature/Change Request
Package: Date/time related
Operating System: Any
PHP Version: 5.3.10
-Assigned To:
+Assigned To: cmb
Block user comment: N
Private report: N
New Comment:
Mixed weeks and days are supported as of PHP 8.0.0[1].
[1] <https://3v4l.org/pfEXQ>
Previous Comments:
------------------------------------------------------------------------
[2013-09-27 17:08:51] krewecherl at gmx dot net
It could not be a part of "days", because "days" is only available when using
DateTime::diff().
IMHO, silently ignoring part of the input is the worst of all possible solutions.
"P1W1D" is not a valid ISO-8601 duration, so this should throw an Exception.
Alternatively, PHP could be extra helpful and allow mixed input like that. But
just ignoring the weeks is definitely not good.
------------------------------------------------------------------------
[2012-03-14 10:16:25] evert at rooftopsolutions dot nl
But it appears that currently both P1W and P1D individually get parsed into the 'd'
property.
Wouldn't it make more sense to retain this behaviour when both are supplied, but just add them
up?
In a sense ->d itself is also a computed property, as this is weeks * 7 for P1W. There is no
->w property.
------------------------------------------------------------------------
[2012-03-14 10:08:52] derick@php.net
It should not be as part of "d", but rather as part of "days". I can quite
easily add this for just weeks and days, but putting months etc in the mix is not going to work. In
any case, ->days is the only computed property, the rest are as parsed.
------------------------------------------------------------------------
[2012-03-14 09:19:40] evert at rooftopsolutions dot nl
Well, I have several counter points:
1) If it's not supported, it should throw an exception. At the moment it fails silently.
2) There's no reason to support a superset of ISO 8601
3) I'm using this because I'm implementing an iCalendar parser. The DURATION property type
is based on ISO 8601:
http://tools.ietf.org/html/rfc5545#section-3.3.6
In the wild I'm finding duration values with mixed weeks and days. Now I need to pre-parse this
string, do weeks * 7, then regenerate the (almost identical) string before I can add it to the
constructor.
I feel adding support for W and D at the same time does not pose additional confusion, and is a
sensible feature.
------------------------------------------------------------------------
[2012-03-14 01:51:40] uramihsayibok at gmail dot com
ISO 8601 doesn't allow mixing weeks with anything else.
If you need both then just do the math: 7 * weeks + days
------------------------------------------------------------------------
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=61366
--
Edit this bug report at https://bugs.php.net/bug.php?id=61366&edit=1