Как я могу найти первую и последнюю дату в месяц с помощью PHP?

Как я могу найти первую и последнюю дату в месяц с помощью PHP? Например, сегодня 21 апреля 2010 года; Я хочу найти 1 апреля 2010 года и 30 апреля 2010 года.

Самый простой способ – использовать date , которая позволяет смешивать закодированные значения с единицами, извлеченными из метки времени. Если вы не указали временную метку, она принимает текущую дату и время.

 // Current timestamp is assumed, so these find first and last day of THIS month $first_day_this_month = date('m-01-Y'); // hard-coded '01' for first day $last_day_this_month = date('mt-Y'); // With timestamp, this gets last day of April 2010 $last_day_april_2010 = date('mt-Y', strtotime('April 21, 2010')); 

date() выполняет поиск строки, заданной, например, 'mt-Y' , для определенных символов, и заменяет их значениями из метки времени. Поэтому мы можем использовать эти символы для извлечения значений и форматирования, которые мы хотим из метки времени. В приведенных выше примерах:

  • Y дает вам 4-значный год с меткой времени ('2010')
  • m дает вам числовой месяц из метки времени, с начальным нулем ('04')
  • t дает вам количество дней в месяце метки времени ('30')

Вы можете быть творческими с этим. Например, чтобы получить первую и последнюю секунду месяца:

 $timestamp = strtotime('February 2012'); $first_second = date('m-01-Y 00:00:00', $timestamp); $last_second = date('mtY 12:59:59', $timestamp); // A leap year! 

См. http://php.net/manual/en/function.date.php для других символов и более подробной информации.

Простой

  • Y – полное числовое представление года, 4 цифры
  • m – числовое представление месяца, с ведущими нулями
  • t – количество дней в данном месяце

Ссылка – http://www.php.net/manual/en/function.date.php

 <?php echo 'First Date = ' . date('Ym-01') . '<br />'; echo 'Last Date = ' . date('Ym-t') . '<br />'; ?> 

Вы можете использовать функцию даты, чтобы узнать, сколько дней в месяце есть.

 // Get the timestamp for the date/month in question. $ts = strtotime('April 2010'); echo date('t', $ts); // Result: 30, therefore, April 30, 2010 is the last day of that month. 

Надеюсь, это поможет.

EDIT: После прочтения ответа Луиса мне пришло в голову, что вы можете хотеть его в правильном формате (YY-mm-dd). Это может быть очевидно, но не стоит упоминать:

 // After the above code echo date('Ym-t', $ts); 

Это даст вам последний день месяца:

 function lastday($month = '', $year = '') { if (empty($month)) { $month = date('m'); } if (empty($year)) { $year = date('Y'); } $result = strtotime("{$year}-{$month}-01"); $result = strtotime('-1 second', strtotime('+1 month', $result)); return date('Ym-d', $result); } 

И первый день:

 function firstDay($month = '', $year = '') { if (empty($month)) { $month = date('m'); } if (empty($year)) { $year = date('Y'); } $result = strtotime("{$year}-{$month}-01"); return date('Ym-d', $result); } 

Для конкретного месяца и года использования даты () в качестве естественного языка, как показано ниже

 $first_date = date('dm-Y',strtotime('first day of april 2010')); $last_date = date('dm-Y',strtotime('last day of april 2010')); // Isn't it simple way? 

но за текущий месяц

 $first_date = date('dm-Y',strtotime('first day of this month')); $last_date = date('dm-Y',strtotime('last day of this month')); 

Если вы хотите найти первый и последний день с указанной переменной даты, вы можете сделать это, как показано ниже:

 $date = '2012-02-12';//your given date $first_date_find = strtotime(date("Ymd", strtotime($date)) . ", first day of this month"); echo $first_date = date("Ymd",$first_date_find); $last_date_find = strtotime(date("Ymd", strtotime($date)) . ", last day of this month"); echo $last_date = date("Ymd",$last_date_find); 

Для текущей даты просто используйте это

 $first_date = date('Ym-d',strtotime('first day of this month')); $last_date = date('Ym-d',strtotime('last day of this month')); 

Демо-версия

Получить первую и последнюю дату Last Month ;

 $dateBegin = strtotime("first day of last month"); $dateEnd = strtotime("last day of last month"); echo date("DFY", $dateBegin); echo "<br>"; echo date("DFY", $dateEnd); 
 $month=01; $year=2015; $num = cal_days_in_month(CAL_GREGORIAN, $month, $year); echo $num; в $month=01; $year=2015; $num = cal_days_in_month(CAL_GREGORIAN, $month, $year); echo $num; 

отображение 31 последний день

В простом формате

  $curMonth = date('F'); $curYear = date('Y'); $timestamp = strtotime($curMonth.' '.$curYear); $first_second = date('Ym-01 00:00:00', $timestamp); $last_second = date('Ymt 12:59:59', $timestamp); 

Для следующего месяца измените $ curMonth на $ curMonth = date ('F', strtotime («+ 1 месяц»));