Bug #62194 [Opn->Nab]: Bug on using strtotime to date
| From: | rasmus@php.net | Date: | Thu, 31 May 2012 11:24:59 +0000 |
| Subject: | Bug #62194 [Opn->Nab]: Bug on using strtotime to date | ||
| References: | 1 | Groups: | php.bugs |
| Request: | Send a blank email to php-bugs+get-170952@lists.php.net to get a copy of this message | ||
Edit report at https://bugs.php.net/bug.php?id=62194&edit=1
ID: 62194
Updated by: rasmus@php.net
Reported by: kg_emopunk at yahoo dot com
Summary: Bug on using strtotime to date
-Status: Open
+Status: Not a bug
Type: Bug
Package: Scripting Engine problem
Operating System: Linux/ Windows
PHP Version: 5.3.13
Block user comment: N
Private report: N
New Comment:
There isn't really a bug here. If you try this same script tomorrow you will get
your expected output. strtotime() will use the current date for any missing
info, so since today is the 31st of the month, it will try to get the 31st of
each month. Any month that doesn't have 31 days will end up giving you the
appropriate offset into the following month. This is consistent with relative
date offsets and related to the standard Unix approach to handling impossible
dates described here:
http://www.gnu.org/software/tar/manual/html_node/Relative-items-in-date-
strings.html#SEC125
The real solution is to specify a day in the month if you want your code to work
reliably. As in strtotime("$key 1")
Previous Comments:
------------------------------------------------------------------------
[2012-05-31 05:49:20] kg_emopunk at yahoo dot com
Description:
------------
---
From manual page: http://www.php.net/function.strtotime
---
There is a slight bug using strtotime to date.
When the strtotime parameter is only Month, the output adding date syntax is
incorrect.
Incorrect month outputs:
Feb / February
Apr / April
Jun / June
Sep / September
Nov / November
The solution for this is to add a day or a year.
e.g ( date("F",strtotime($month." ".$day)); )
Test script:
---------------
<?php
$s=array('Jan','Feb','Mar','Apr','May','Jun','Jul','Aug','Sep','Oct','Nov','Dec');
$s1=array('January','February','March','April','May','June','July','August','September','October','November','December');
echo "<h4> 3 Letters Months </h4>";
foreach ($s as $key) {
echo date("F",strtotime($key))."<br>";
}
echo "<h4> Full Text Months </h4>";
foreach ($s1 as $key) {
echo date("F",strtotime($key))."<br>";
}
?>
Expected result:
----------------
3 Letters Months
January
February
March
April
May
June
July
August
September
October
November
December
Full Text Months
January
February
March
April
May
June
July
August
September
October
November
December
Actual result:
--------------
3 Letters Months
January
March
March
May
May
July
July
August
October
October
December
December
------------------------------------------------------------------------
--
Edit this bug report at https://bugs.php.net/bug.php?id=62194&edit=1