Page 1 of 1

PHP BUG!

Posted: Tue Aug 31, 2010 7:44 am
by savagestudio
hello evrybody !
i have a probleme with mktime() and i think it is a bug, it do it only with the month Oct here is my very simple code:

Code: Select all

<?php
$themonth=8;
$prevM = date("M", mktime(0, 0, 0, ($themonth - 1) ));
$nextM = date("M", mktime(0, 0, 0, ($themonth + 1) ));
echo '$prevM='.$prevM.'<br />$nextM='.$nextM;

?>
//it trace :
// $prevM=Jul // ok
//$nextM=Oct // not ok!


BUT IF I PUT THE MONTH TO 9 :

Code: Select all

themonth=9;
$prevM = date("M", mktime(0, 0, 0, ($themonth - 1) ));
$nextM = date("M", mktime(0, 0, 0, ($themonth + 1) ));
echo '$prevM='.$prevM.'<br />$nextM='.$nextM;
//it trace :
$prevM=Aug // ok
$nextM=Oct // ok!


AND:

Code: Select all

themonth=10;
$prevM = date("M", mktime(0, 0, 0, ($themonth - 1) ));
$nextM = date("M", mktime(0, 0, 0, ($themonth + 1) ));
echo '$prevM='.$prevM.'<br />$nextM='.$nextM;


trace $prevM=Oct //not ok
$nextM=Dec // ok!


the thing i dont follow is that it was working before !

Re: PHP BUG! Please help!!

Posted: Tue Aug 31, 2010 8:02 am
by savagestudio
AND IF I TYPE :

Code: Select all

$prevM = date("M", mktime(0, 0, 0, 9 ));
$nextM = date("M", mktime(0, 0, 0, 11));
echo '$prevM='.$prevM.'<br />$nextM='.$nextM;
it trace:
$prevM=Oct
$nextM=Dec


it doesn't make any sense
i can send the url of this code for see that i am not lying i need help !! 8O

Please help PHP BUG!

Posted: Tue Aug 31, 2010 8:36 am
by savagestudio
Please some help ?

Re: PHP BUG!

Posted: Tue Aug 31, 2010 9:21 am
by AbraCadaver
From the manual: "Arguments may be left out in order from right to left; any arguments thus omitted will be set to the current value according to the local date and time."

So I assume that since you omitted the day it uses todays date, 31 as the day argument for September which is not valid (only 30 days in September) so it rolls over to the next month. Try this:

Code: Select all

$prevM = date("M", mktime(0, 0, 0, 9, 1));
$nextM = date("M", mktime(0, 0, 0, 11, 1));
echo '$prevM='.$prevM.'<br />$nextM='.$nextM;

Re: PHP BUG!

Posted: Tue Aug 31, 2010 9:29 am
by savagestudio
THANKS A LOT, I WAS STARTING TO PUL MY HAIR OFF :banghead: i was far from finding the answer :crazy: Thanks and have a good day! :D

Re: PHP BUG!

Posted: Tue Aug 31, 2010 10:31 am
by Weirdan
mktime(0,0,0, 9) means mktime(0,0,0, 9, date('j'), date('Y'));
And since today is 31st you're asking for 31st of September. Last time I checked September had only 30 days, thus mktime() assumes you're asking for the 1st of October.