Doc #63878 [Opn]: date time function issue problem

From: Date: Tue, 01 Jan 2013 07:15:32 +0000
Subject: Doc #63878 [Opn]: date time function issue problem
References: 1  Groups: php.doc.bugs 
Request: Send a blank email to doc-bugs+get-9338@lists.php.net to get a copy of this message
Edit report at https://bugs.php.net/bug.php?id=63878&edit=1 ID: 63878 User updated by: rupesh dot php at gmail dot com Reported by: rupesh dot php at gmail dot com Summary: date time function issue problem Status: Open Type: Documentation Problem Package: *General Issues PHP Version: Irrelevant Block user comment: N Private report: N New Comment: Got your point, but isn't that an irrelevant logic. If someone is trying to do +/- month on the last day of that month, as in my case, then it should be pointed to the last day of the previous month, instead of being pointed to the 1st day or so of the current month. Previous Comments: ------------------------------------------------------------------------ [2012-12-31 21:25:39] mail+php at requinix dot net Take a close look at the documentation for mktime(). day The number of the day relative to the end of the previous month. [...] Values greater than the number of days in the relevant month reference the appropriate day in the following month(s). When you told it to create a time for "November 31st, 2012" it overflowed the day number into December. Same for September/October. Likewise if you had it go all the way back to February it would have given you March 2nd. ------------------------------------------------------------------------ [2012-12-31 12:55:58] rupesh dot php at gmail dot com Description: ------------ --- From manual page: http://www.php.net/function.date#refsect1-function.date-seealso --- The date time related functions do not work properly when the current date is 31st of a month, like today is 31st December 2012.. It seems to be working on a 30 day principle for a month and does not return the desired output whenever we you a +/- 1month ting with strtotime() function or with a mktime() function. The issue is depicted in the script mentioned below with the output that I get. Script :: --------- for($i=0; $i<6; $i++) { echo date("Y-M-d", mktime(0, 0, 0, date("m")-$i, date("d"), date("Y")))."<br>"; // or even with // echo date("Y-M-d", strtotime("-".$i."day"))."<br>"; } Outputs :: ---------- 2012-Dec-31 2012-Dec-01 2012-Oct-31 2012-Oct-01 2012-Aug-31 2012-Jul-31 instead, it should have been :: ------------- 2012-Dec-31 2012-Nov-30 2012-Oct-31 2012-Sep-30 2012-Aug-31 2012-Jul-31 Note that I have only come across this issue with today being 31st of the month. Test script: --------------- for($i=0; $i<6; $i++) { echo date("Y-M-d", mktime(0, 0, 0, date("m")-$i, date("d"), date("Y")))."<br>"; // or even with // echo date("Y-M-d", strtotime("-".$i."day"))."<br>"; } Expected result: ---------------- 2012-Dec-31 2012-Nov-30 2012-Oct-31 2012-Sep-30 2012-Aug-31 2012-Jul-31 Actual result: -------------- 2012-Dec-31 2012-Dec-01 2012-Oct-31 2012-Oct-01 2012-Aug-31 2012-Jul-31 ------------------------------------------------------------------------ -- Edit this bug report at https://bugs.php.net/bug.php?id=63878&edit=1

« previous php.doc.bugs (#9338) next »