When I was writing a program today, I suddenly discovered something I wrote a function to get the number of days in the month, a classic switch version. But when I got the number of days in the previous month, I just changed the month to -1. I guess I was too sleepy at the time. It gave me a creepy feeling when I saw it again. I originally wanted to I wanted to process it a little more, but I thought there must be some super convenient method, so I found the version below and made a few minor modifications.
Get the date of this month:
1 function getMonth($date){ 2 $firstday = date("Y-m-01",strtotime($date)); 3 $lastday = date("Y-m-d",strtotime("$firstday +1 month -1 day")); 4 return array($firstday,$lastday); 5 }
$firstday is the first day of the month. If $date is 2014-2, $firstday will be 2014-02-01. Then add one month to $firstday to get 2014-03-01, and then subtract one day. It is 2014-02-28. It is so convenient to use date() and strtotime().
Get the date of last month:
1 function getlastMonthDays($date){ 2 $timestamp=strtotime($date); 3 $firstday=date('Y-m-01',strtotime(date('Y',$timestamp).'-'.(date('m',$timestamp)-1).'-01')); 4 $lastday=date('Y-m-d',strtotime("$firstday +1 month -1 day")); 5 return array($firstday,$lastday); 6 }
You need to get a timestamp for the last month’s date, and then add -1 to the month. The super smart date() will convert things like 2014-0-1 into 2013-12-01. It’s so cool. .
Get next month’s date:
1 function getNextMonthDays($date){ 2 $timestamp=strtotime($date); 3 $arr=getdate($timestamp); 4 if($arr['mon'] == 12){ 5 $year=$arr['year'] +1; 6 $month=$arr['mon'] -11; 7 $firstday=$year.'-0'.$month.'-01'; 8 $lastday=date('Y-m-d',strtotime("$firstday +1 month -1 day")); 9 }else{ 10 $firstday=date('Y-m-01',strtotime(date('Y',$timestamp).'-'.(date('m',$timestamp)+1).'-01')); 11 $lastday=date('Y-m-d',strtotime("$firstday +1 month -1 day")); 12 } 13 return array($firstday,$lastday); 14 }
The code for next month’s date seems a little longer, because date() cannot convert things like 2014-13-01, it will go back directly to 1970, so we need to deal with the issue of December in the front, except for December Just the 1st of the month is OK.
Generally speaking, it is very convenient. The date function is too powerful.