как получить первые и последние дни данного месяца - PullRequest
56 голосов
/ 25 сентября 2011

Я хочу переписать запрос mysql, в котором используются функции month () и year () для отображения всех сообщений за определенный месяц, который передается моей функции в виде формата параметра «Ymd», но я не знаю, как Я получаю последний день указанного месяца.

$query_date = '2010-02-04';
list($y, $m, $d) = explode('-', $query_date);
$first_day = $y . '-' . $m . '-01';

Ответы [ 8 ]

125 голосов
/ 25 сентября 2011

Возможно, вы захотите взглянуть на функции strtotime и date.

<?php

$query_date = '2010-02-04';

// First day of the month.
echo date('Y-m-01', strtotime($query_date));

// Last day of the month.
echo date('Y-m-t', strtotime($query_date));
12 голосов
/ 01 ноября 2014

Я знаю, что этот вопрос имеет хороший ответ с 't', но подумал, что я бы добавил другое решение.

$first = date("Y-m-d", strtotime("first day of this month"));
$last = date("Y-m-d", strtotime("last day of this month"));
10 голосов
/ 12 ноября 2014

Попробуйте, если вы используете PHP 5.3+, в php

$query_date = '2010-02-04';
$date = new DateTime($query_date);
//First day of month
$date->modify('first day of this month');
$firstday= $date->format('Y-m-d');
//Last day of month
$date->modify('last day of this month');
$lastday= $date->format('Y-m-d');

Чтобы найти в следующем месяце последнюю дату, измените следующим образом

 $date->modify('last day of 1 month');
 echo $date->format('Y-m-d');

и т. Д. *

6 голосов
/ 25 сентября 2011

cal_days_in_month () должно дать вам общее количество дней в месяце и, следовательно, последнее.

1 голос
/ 13 октября 2016
$month = 10; // october

$firstday = date('01-' . $month . '-Y');
$lastday = date(date('t', strtotime($firstday)) .'-' . $month . '-Y');
1 голос
/ 04 августа 2015
// First date of the current date
echo date('Y-m-d', mktime(0, 0, 0, date('m'), 1, date('Y')));
echo '<br />';
// Last date of the current date
echo date('Y-m-d', mktime(0, 0, 0, date('m')+1, 0, date('Y')));
1 голос
/ 25 сентября 2011

В основном:

$lastDate = date("Y-m-t", strtotime($query_d));

Дата t число дней возврата параметра в текущем месяце.

0 голосов
/ 13 августа 2018

Печатать только текущую неделю месяца:

function my_week_range($date) {
    $ts = strtotime($date);
    $start = (date('w', $ts) == 0) ? $ts : strtotime('last sunday', $ts);
    echo $currentWeek = ceil((date("d",strtotime($date)) - date("w",strtotime($date)) - 1) / 7) + 1;
    $start_date = date('Y-m-d', $start);$end_date=date('Y-m-d', strtotime('next saturday', $start));
    if($currentWeek==1)
        {$start_date = date('Y-m-01', strtotime($date));}
    else if($currentWeek==5)
       {$end_date = date('Y-m-t', strtotime($date));}
    else
       {}
    return array($start_date, $end_date );
}

$date_range=list($start_date, $end_date) = my_week_range($new_fdate);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...