Remove warning when parsing datetime with + symbol?

php.internals

mickmackusa

3 years ago
Can anyone explain to me why it is desirable/beneficial for the DateTime class to store a warning that trailing characters were ignored while parsing a date/time string with the + symbol in createFromFormat()? Basic example: https://3v4l.org/Sod9o $dt = DateTime::createFromFormat('h:i:A+', '01:31:PM - 03:00:PM'); var_export(DateTime::getLastErrors()); Output: array ( 'warning_count' => 1, 'warnings' => array ( 8 => 'Trailing data', ), 'error_count' => 0, 'errors' => array ( ), ) Docs: https://www.php.net/manual/en/datetimeimmutable.createfromformat.php#:~:text=If%20this%20format,instead I mean, why would I welcome the warning when I explicitly stated that I want to ignore the trailing characters? If there is longer a good reason for the warning, can it be removed from the language? If there is some benefit from having this feedback, then could it be moved to be a new property of the datetime object? To programming purists who hate generating notices and warnings, this probably feels like a wart on the language. Please enlighten me. mickmackusa

Derick Rethans

3 years ago
On Thu, 24 Nov 2022, mickmackusa wrote:
> Can anyone explain to me why it is desirable/beneficial for the DateTime > class to store a warning that trailing characters were ignored while > parsing a date/time string with the + symbol in createFromFormat()?
I have no idea why I decided that was a good idea back all these years, and I'm perfectly happy to remove that restriction from PHP 8.3 forwards — it's too late to do that in PHP 8.2 now, as it's being released next week. cheers, Derick
-- PHP 7.4 Release Manager Host of PHP Internals News: https://phpinternals.news Like Xdebug? Consider supporting me: https://xdebug.org/support https://derickrethans.nl | https://xdebug.org | https://dram.io twitter: @derickr and @xdebug

Christoph Becker

3 years ago
On 28.11.2022 at 16:50, Derick Rethans wrote:
> On Thu, 24 Nov 2022, mickmackusa wrote: > >> Can anyone explain to me why it is desirable/beneficial for the DateTime >> class to store a warning that trailing characters were ignored while >> parsing a date/time string with the + symbol in createFromFormat()? > > I have no idea why I decided that was a good idea back all these years, > and I'm perfectly happy to remove that restriction from PHP 8.3 > forwards — it's too late to do that in PHP 8.2 now, as it's being > released next week.
That would appear to consitute a BC break. From the docs: | If this format specifier is present, trailing data in the string will | not cause an error, but a warning instead This can be used to parse the date (without the +, parsing may fail), but still be able to return a message about ignored characters to the user.
-- Christoph M. Becker

Paul Dragoonis

3 years ago
On Mon, 28 Nov 2022, 16:32 Christoph M. Becker, <cmbecker69@gmx.de> wrote:
> On 28.11.2022 at 16:50, Derick Rethans wrote: > > > On Thu, 24 Nov 2022, mickmackusa wrote: > > > >> Can anyone explain to me why it is desirable/beneficial for the DateTime > >> class to store a warning that trailing characters were ignored while > >> parsing a date/time string with the + symbol in createFromFormat()? > > > > I have no idea why I decided that was a good idea back all these years, > > and I'm perfectly happy to remove that restriction from PHP 8.3 > > forwards — it's too late to do that in PHP 8.2 now, as it's being > > released next week. > > That would appear to consitute a BC break. From the docs: > > | If this format specifier is present, trailing data in the string will > | not cause an error, but a warning instead > > This can be used to parse the date (without the +, parsing may fail), > but still be able to return a message about ignored characters to the user. >
We are allowed to break BC in minor version upgrades, Chris. We can allow this is 8.3 I think, rather than waiting for 9.0 What do you think?

Derick Rethans

3 years ago
On Mon, 28 Nov 2022, Paul Dragoonis wrote:
> On Mon, 28 Nov 2022, 16:32 Christoph M. Becker, <cmbecker69@gmx.de> wrote: > > > On 28.11.2022 at 16:50, Derick Rethans wrote: > > > > > On Thu, 24 Nov 2022, mickmackusa wrote: > > > > > >> Can anyone explain to me why it is desirable/beneficial for the DateTime > > >> class to store a warning that trailing characters were ignored while > > >> parsing a date/time string with the + symbol in createFromFormat()? > > > > > > I have no idea why I decided that was a good idea back all these years, > > > and I'm perfectly happy to remove that restriction from PHP 8.3 > > > forwards — it's too late to do that in PHP 8.2 now, as it's being > > > released next week. > > > > That would appear to consitute a BC break. From the docs: > > > > | If this format specifier is present, trailing data in the string will > > | not cause an error, but a warning instead > > > > This can be used to parse the date (without the +, parsing may fail), > > but still be able to return a message about ignored characters to the user. > > > > We are allowed to break BC in minor version upgrades, Chris. > > We can allow this is 8.3 I think, rather than waiting for 9.0 > > What do you think?
No, we don't break BC for minor gains. If Christopher says that this is a documented feature, then there is even less opportunity to do so. I'll see if I can come up with a different letter to allow for just ignoring trailing data. cheers, Derick
-- https://derickrethans.nl | https://xdebug.org | https://dram.io Author of Xdebug. Like it? Consider supporting me: https://xdebug.org/support Host of PHP Internals News: https://phpinternals.news mastodon: @derickr@phpc.social @xdebug@phpc.social twitter: @derickr and @xdebug