Как я могу найти первую и последнюю дату за месяц, используя PHP? - PullRequest
72 голосов
/ 21 апреля 2010

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

Ответы [ 9 ]

190 голосов
/ 24 июля 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('m-t-Y');

// With timestamp, this gets last day of April 2010
$last_day_april_2010 = date('m-t-Y', strtotime('April 21, 2010'));

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

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

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

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

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

24 голосов
/ 10 ноября 2010

Простой

  • Y - полное числовое представление года, 4 цифры
  • м - Числовое представление месяца с ведущими нулями
  • т - Количество дней в данном месяце

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

<?php
    echo 'First Date    = ' . date('Y-m-01') . '<br />';
    echo 'Last Date     = ' . date('Y-m-t')  . '<br />';
?>
16 голосов
/ 21 апреля 2010

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

// 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.

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

РЕДАКТИРОВАТЬ: Прочитав ответ Луиса, мне пришло в голову, что вы можете захотеть его в правильном формате (ГГ-мм-дд). Это может быть очевидно, но не больно упоминать:

// After the above code
echo date('Y-m-t', $ts); 
11 голосов
/ 21 апреля 2010

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

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('Y-m-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('Y-m-d', $result);
} 
3 голосов
/ 11 февраля 2017

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

$date    =    '2012-02-12';//your given date

$first_date_find = strtotime(date("Y-m-d", strtotime($date)) . ", first day of this month");
echo $first_date = date("Y-m-d",$first_date_find);

$last_date_find = strtotime(date("Y-m-d", strtotime($date)) . ", last day of this month");
echo $last_date = date("Y-m-d",$last_date_find);

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

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

Live Demo

3 голосов
/ 29 июля 2015

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

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

, но для текущего месяца

$first_date = date('d-m-Y',strtotime('first day of this month'));
$last_date = date('d-m-Y',strtotime('last day of this month'));
2 голосов
/ 26 октября 2017

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

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

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

2 голосов
/ 18 июня 2015

Для получения первой и последней даты Last Month;

$dateBegin = strtotime("first day of last month");  
$dateEnd = strtotime("last day of last month");

echo date("D-F-Y", $dateBegin);  
echo "<br>";        
echo date("D-F-Y", $dateEnd);
0 голосов
/ 31 декабря 2015
$month=01;
$year=2015;
$num = cal_days_in_month(CAL_GREGORIAN, $month, $year);
echo $num;

отображение 31 последнего дня даты

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...