British date format parsing
During the PHP London conference (slides are here as usual), a number of British people were "complaining" that PHP's strtotime() and date_create() /new DateTime() functions do not understand the British date format "dd/mm/yyyy". Historically, the "English" text to date parsers in PHP only accept the illogical American format of "mm/dd/yyyy". Having seen this problem before, I recently added a new function/method to PHP's Date/Time support to address exactly this issue. From PHP 5.3 the new date_create_from_format() function and the DateTime::createFromFormat() factory method are available. As first argument they accept the expected format, and as second argument the string to parse. To parse a British date string, you would for example use:
<?php $dt = date_create_from_format( 'd/m/Y', "02/03/2008" ); echo $dt->format( 'd/m/Y' ), "\n"; ?>
In case the passed string does not match the format, the function will return false. With the also new function date_get_last_errors() method you then can request more information about which part of the string could not be passed. The following example illustrates that:
<?php
$dt = date_create_from_format( 'Y-m-d', "02/03/2008" );
if ( !$dt )
{
$errors = date_get_last_errors();
var_dump( $errors['errors']);
}
?>
The $errors contains a list of errors, indexed by the position in the string where the error was found. The above script would produce:
array(3) {
[2]=>
string(22) "Unexpected data found."
[5]=>
string(22) "Unexpected data found."
[8]=>
string(13) "Trailing data"
}
The format specifiers are mostly similar to the ones used for the date() function. Documentation on the new functions should make it into the documentation soon.
Comments
Thats great news.. the strtotime format was always a bit too magical to me =)
Fan-bloody-tastic. Well done old chap!
Thanks Derek!
With a useful title as well, so I can find it again when I google for it!
Rob...
It's not a "British" format, it's the normal format used everywhere. The American format is the odd one out ;)
Hi!
Thank you - being one of those annoying people who pestered you for this, I'm much appreciative of your hard work :)
Thanks! David.
Now if we could just get that pesky $ at the beginning of every variable to be a £ then we'd be talking.
any chance this gets released as a legacy class or in PEAR compat? This would be so damn usefull if it weren't for being only available in 5.3
Anyway, damn nice job derick!
Thanks Derick,
Really useful addition, I've always had to convert the dates manually. i.e
Thanks
@DewiMorgan: Definitely want to avoid adding flags, as there could be many. I wouldn't be able to do that for PHP 5.2 anyway, and PHP 5.3 has a better solution in the form of date_parse().
Can't say for sure, since I've not used it (still on 5.2 here) but date_parse() seems to be "better" only in as much as it has the exact same problem, so would need the exact same fix. From the manual:
"Date in format accepted by strtotime()."
If flags for critical functionality like this are out of the question (other than all the flags that have already been added to other functions, of course) then maybe a config setting, "make the date functions respect my locale"?
@Dewi: Sorry, meant DateTime::createFromFormat (http://no.php.net/manual/en/datetime.createfromformat.php)
Life Line
Updated a restaurant
I walked 9.8km in 1h41m58s
@milh0use You were on the news!
But the best thing I saw on my stroll through London's Richmond Park yesterday, was finding a nest of Sparrowhawks.
There was one parent and two juveniles.
First they were soaring overhead, before one of them landed in a tree right in front of me.
A while later, I saw them in the air again, where one of them let go of some food, which another grabbed right from the air.
#BirdsOfFediverse #Birds #BirdPhotography #Nature #NaturePhotography #London #NoAI
I had a stroll through London's Richmond Park yesterday.
I found quite a few Green and Great-Spotted Woodpeckers!
#BirdsOfFediverse #Birds #BirdPhotography #Nature #NaturePhotography #London #NoAI
I walked 10.6km in 2h40m20s
I hiked 14.1km in 4h40m00s
Created a restaurant
I walked 1.6km in 23m28s
Merge branch 'xdebug_3_5'
Merged pull request #1099
Fixed issue #2435: Xdebug does not handle 'muiltiple_sessions' dbgp f…
I walked 6.2km in 1h5m12s
Merged pull request #1098
PHP 8.6: require et all no longer show the file names in error messag…
Created 2 gates, a bench, and a crossing; Updated 5 gates and 2 benches
I walked 6.1km in 1h19m29s
I walked 0.9km in 9m06s
Updated a restaurant
I walked 8.5km in 1h33m20s
I walked 7.0km in 1h12m36s
Staring Contest with an Owl
This Little Owl stared at me intensely for a fair amount of time in London's Bushy Park.
#BirdPhotography #BirdsOfFediverse #NaturePhotography #Photography #SuperbOwl #London #Birds
Updated an apartments building
I walked 6.8km in 1h6m55s
Little Owl owlet
This lovely owlet was quite easy to find in a London Park, with some help as they camouflage so well!
I saw its sibling too.
#BirdPhotography #BirdsOfFediverse #Photography #Nature #London #BirdsOfMastodon





Shortlink
This article has a short URL available: https://drck.me/bdfp-68x