Doc #65747 [Com]: DateTime __construct error
| From: | gabri dot ns at gmail dot com | Date: | Mon, 30 Sep 2013 03:09:56 +0000 |
| Subject: | Doc #65747 [Com]: DateTime __construct error | ||
| References: | 1 | Groups: | php.doc.bugs |
| Request: | Send a blank email to doc-bugs+get-10331@lists.php.net to get a copy of this message | ||
Edit report at https://bugs.php.net/bug.php?id=65747&edit=1
ID: 65747
Comment by: gabri dot ns at gmail dot com
Reported by: mwiseman at dogandtuba dot com
Summary: DateTime __construct error
Status: Open
Type: Documentation Problem
Package: Date/time related
Operating System: Windows
PHP Version: Irrelevant
Block user comment: N
Private report: N
New Comment:
IMO, the one that should be fixed is strtotime documentation,
since this behaviour came from thus function. As doumentation say,
the first argument should be time string, that -i think- will be
parsed by strtotime function.
Test script:
---------------
echo date('Y-m-d H:i:s',strtotime('now'))."\n";
echo date('Y-m-d H:i:s',strtotime('a'))."\n";
Actual result:
--------------
2013-09-30 10:07:18
2013-09-30 16:07:18
Previous Comments:
------------------------------------------------------------------------
[2013-09-29 22:43:05] requinix@php.net
Expected but undocumented behavior.
Single characters correspond to military timezones. See
http://en.wikipedia.org/wiki/List_of_military_time_zones
foreach (range("a", "z") as $l) {
if ($l == "j") continue;
printf("%s = %s\n", $l, (new DateTime($l))->format("r"));
}
So the list of timezones documentation should be updated to mention these.
------------------------------------------------------------------------
[2013-09-29 15:56:59] vascowhite at gmail dot com
Related To: Bug #65787
------------------------------------------------------------------------
[2013-09-23 23:44:15] mwiseman at dogandtuba dot com
Description:
------------
Constructing a DateTime object with a string argument of 1 character creates a DateTime object set
to now, instead of throwing an exception.
If the string contains two characters (e.g. DateTime('aa')) an exception is thrown.
Test script:
---------------
<?php
date_default_timezone_set('America/Los_Angeles');
$d = new DateTime('x');
echo $d->format('y-m-d');
?>
Expected result:
----------------
Throw an exception
Actual result:
--------------
Valid DateTime object set to now.
------------------------------------------------------------------------
--
Edit this bug report at https://bugs.php.net/bug.php?id=65747&edit=1