#41335 [Opn]: strtotime does not parse australian style dates correctly
| From: | derick@php.net | Date: | Wed, 09 May 2007 06:15:45 +0000 |
| Subject: | #41335 [Opn]: strtotime does not parse australian style dates correctly | ||
| References: | 1 | Groups: | php.bugs |
| Request: | Send a blank email to php-bugs+get-112429@lists.php.net to get a copy of this message | ||
ID: 41335
Updated by: derick@php.net
Reported By: daniel dot oconnor at gmail dot com
Status: Open
-Bug Type: Date/time related
+Bug Type: Feature/Change Request
Operating System: All
PHP Version: 5.2.2
-Assigned To:
+Assigned To: derick
New Comment:
Using / here is problematic as it's also the separator in use by the US
folks, but then in the opposite way. Providing a configuration parameter
won't work as the parser would not be able to handle that. As it's
deliberately not working it is not a bug, but a feature request. It
would be possible to allow parsing according to a given format but that
would be totally new functionality which could make it into PHP 6.
Previous Comments:
------------------------------------------------------------------------
[2007-05-09 02:37:27] daniel dot oconnor at gmail dot com
Description:
------------
Australians tend to do dates in dd/mm/yyyy format, rather than
mm/dd/yyyy
strtotime cannot handle this when the seperator is a '/', but can for
'-' and '.'
PHP should either:
* Use consistent parsing all the way through. It should not matter if
I pick a '-', '/' or '.'
* Provide me an argument or configuration setting with which I can
change the default behaviour.
See http://en.wikipedia.org/wiki/Calendar_date#Date_format
for a
list of countries which use dd/mm/yyyy as a default, compared to a list
of those who use mm/dd/yyyy.
Reproduce code:
---------------
<?php
print phpversion() . "\n\n";
$times = array();
$times[] = '1-10-2007';
$times[] = '1/10/2007';
$times[] = '1.10.2007';
$times[] = '13-10-2007';
$times[] = '13/10/2007';
$times[] = '13.10.2007';
$times[] = '2007-10-10';
$times[] = '2007/10/10';
$times[] = '2007.10.10';
$times[] = '13-13-2007';
$times[] = '13/13/2007';
$times[] = '13.13.2007';
foreach ($times as $time) {
print $time ."\n\t" . strtotime($time) . "\n\t" . date('Y-m-d
H:i:sa', strtotime($time)) . "\n\n";
}
Expected result:
----------------
---------- php ----------
5.2.2
1-10-2007
1191196800
2007-10-01 00:00:00am
1/10/2007
1168387200
2007-01-10 00:00:00am
1.10.2007
1191196800
2007-10-01 00:00:00am
13-10-2007
1192233600
2007-10-13 00:00:00am
13/10/2007
1192233600
2007-10-13 00:00:00am
13.10.2007
1192233600
2007-10-13 00:00:00am
2007-10-10
1191974400
2007-10-10 00:00:00am
2007/10/10
1191974400
2007-10-10 00:00:00am
2007.10.10
1970-01-01 00:00:00am
13-13-2007
1970-01-01 00:00:00am
13/13/2007
1970-01-01 00:00:00am
13.13.2007
1970-01-01 00:00:00am
Output completed (0 sec consumed) - Normal Termination
Actual result:
--------------
---------- php ----------
5.2.2
1-10-2007
1191196800
2007-10-01 00:00:00am
1/10/2007
1168387200
2007-01-10 00:00:00am
1.10.2007
1191196800
2007-10-01 00:00:00am
13-10-2007
1192233600
2007-10-13 00:00:00am
13/10/2007
1970-01-01 00:00:00am
13.10.2007
1192233600
2007-10-13 00:00:00am
2007-10-10
1191974400
2007-10-10 00:00:00am
2007/10/10
1191974400
2007-10-10 00:00:00am
2007.10.10
1970-01-01 00:00:00am
13-13-2007
1970-01-01 00:00:00am
13/13/2007
1970-01-01 00:00:00am
13.13.2007
1970-01-01 00:00:00am
Output completed (0 sec consumed) - Normal Termination
------------------------------------------------------------------------
--
Edit this bug report at http://bugs.php.net/?id=41335&edit=1