Home  >  Article  >  Backend Development  >  PHP uses strtotime to get the date code examples of last month, next month and this month

PHP uses strtotime to get the date code examples of last month, next month and this month

怪我咯
怪我咯Original
2017-07-10 09:50:312965browse

There is a function called strtotime in PHP. strtotime implementation function: get the timestamp of a certain date, or get the timestamp of a certain time. strtotime parses the date and time description of any English text into a Unix timestamp

When I was writing a program today, I suddenly discovered a function that I wrote a long time ago to get the number of days in the month, the classic switch version , but when I got the number of days in the previous month, I just reduced the month by -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 deal with it again, but when I thought about it, there must be something super convenient. method, so I found the following version and made a few minor modifications.

Get the date of this month:

 function getMonth($date){
   $firstday = date("Y-m-01",strtotime($date));
   $lastday = date("Y-m-d",strtotime("$firstday +1 month -1 day"));
   return array($firstday,$lastday);
 }

$firstday is the first day of the month. If $date is 2014-2, $firstday will be 2014-02-01, and then according to Adding one month to $firstday is 2014-03-01, and subtracting another day is 2014-02-28. Using date() and strtotime() is really convenient.

Get the date of last month:

 function getlastMonthDays($date){
   $timestamp=strtotime($date);
   $firstday=date('Y-m-01',strtotime(date('Y',$timestamp).'-'.(date('m',$timestamp)-1).'-01'));
   $lastday=date('Y-m-d',strtotime("$firstday +1 month -1 day"));
   return array($firstday,$lastday);
 }

The date of last month needs to get a timestamp first, and then add -1 to the month. Then the super smart date() will change 2014-0- 1 is converted into 2013-12-01, which is so cool.

Get next month’s date:

 function getNextMonthDays($date){
   $timestamp=strtotime($date);
   $arr=getdate($timestamp);
   if($arr['mon'] == 12){
     $year=$arr['year'] +1;
     $month=$arr['mon'] -11;
     $firstday=$year.'-0'.$month.'-01';
     $lastday=date('Y-m-d',strtotime("$firstday +1 month -1 day"));
   }else{
     $firstday=date('Y-m-01',strtotime(date('Y',$timestamp).'-'.(date('m',$timestamp)+1).'-01'));
     $lastday=date('Y-m-d',strtotime("$firstday +1 month -1 day"));
   }
   return array($firstday,$lastday);
 }

The code for next month’s date looks a little longer, because date() cannot convert something like 2014-13-01, it will return directly to 1970, so we need to deal with the issue of December first. Except for December, just add the month + 1 and it will be OK.

Generally speaking, it is very convenient. The date function is too powerful.

Finally, a brief introduction to the usage of strtotime

Get the unix timestamp of a specified date

strtotime("2009-1-22" ) Example is as follows:
Echo strtotime("2009-1-22")
Result: 1232553600
Description: Returns the timestamp of 0:00:00 on January 22, 2009

Get the English text date and time

The example is as follows:
To facilitate comparison, use date to convert the current timestamp and the specified timestamp into system time

 (1) Print the timestamp of tomorrow at this time strtotime("+1 day")
Current time:
echo date("Y-m-d H:i:s",time())
Result: 2009-01-22 09:40:25
Specified time:
echo date("Y-m-d H:i:s",strtotime("+1 day"))
Result: 2009- 01-23 09:40:25

 (2) Print the timestamp of yesterday at this time strtotime("-1 day")
Current time:
echo date("Y-m-d H :i:s",time())
Result: 2009-01-22 09:40:25
Specified time:
echo date("Y-m-d H:i:s",strtotime("- 1 day"))
Result: 2009-01-21 09:40:25

(3) Print the timestamp at this time next week strtotime("+1 week")
Current time:
echo date("Y-m-d H:i:s",time())
Result: 2009-01-22 09:40:25
Specified time:
echo date ("Y-m-d H:i:s",strtotime("+1 week"))
Result: 2009-01-29 09:40:25

(4) Print last week The timestamp at this time strtotime("-1 week")
Current time:
echo date("Y-m-d H:i:s",time())
Result: 2009-01-22 09: 40:25
Specified time:
echo date("Y-m-d H:i:s",strtotime("-1 week"))
Result: 2009-01-15 09:40:25

 (5) Print the timestamp of the specified day of the week strtotime("next Thursday")
Current time:
echo date("Y-m-d H:i:s",time())
Result: 2009-01-22 09:40:25
Specified time:
echo date("Y-m-d H:i:s",strtotime("next Thursday"))
Result: 2009 -01-29 00:00:00

  (6) Print the timestamp of the specified day of the week strtotime("last Thursday")
Current time:
echo date("Y-m-d H:i:s",time())
Result: 2009-01-22 09:40:25
Specified time:
echo date("Y-m-d H:i:s",strtotime(" last Thursday"))
Result: 2009-01-15 00:00:00

As can be seen from the above example, strtotime can parse the date and time description of any English text into a Unix timestamp. We Combine mktime() or date() to format the date and time to obtain the specified timestamp to achieve the required date and time.

The above is the detailed content of PHP uses strtotime to get the date code examples of last month, next month and this month. For more information, please follow other related articles on the PHP Chinese website!

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn