Як я можу знайти першу та останню дату за місяць за допомогою PHP?


Відповіді:


207

Найпростіший спосіб - це використання 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 дає вам 4-значний рік із позначки часу ('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 .


3
Просто додавши інформацію сюди, у мене виникла проблема з перетворенням дати назад у мітку часу unix із цим форматом, виправлено за допомогою формату 'dmY', а не 'mdY' .. також остання секунда буде '23: 59: 59 ', а не '12 : 59: 59 '..
Сайед Каріб,

27

Простий

  • Y - повне числове зображення року, 4 цифри
  • m - Числове представлення місяця з провідними нулями
  • t - кількість днів у даному місяці

Довідково - 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 />';
?>

19

За допомогою функції дати можна визначити, скільки днів у місяці є.

// 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); 

12

Це дасть вам останній день місяця:

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);
} 

6

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

$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'));

5

Якщо ви хочете знайти перший день і останній день із зазначеної змінної дати, ви можете зробити це, як показано нижче:

$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'));

Ви можете замінити дату ("Ymd", strtotime ($ date)) на $ date, оскільки вони однакові, але ви пишете менше коду.
nicolascolman

2

Щоб отримати першу та останню дату 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);

2

У простому форматі

   $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 місяць"));


0
$month=01;
$year=2015;
$num = cal_days_in_month(CAL_GREGORIAN, $month, $year);
echo $num;

відобразити 31 останній день дати

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.