如何获得给定月份的第一天和最后一天


72

我想重写一个mysql查询,该查询使用month()和year()函数显示特定月份的所有帖子,这些帖子以“ Ymd”参数格式显示在我的函数中,但是我不知道如何获取给定月份日期的最后一天。

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

Answers:


165

您可能需要查看strtotimedate功能。

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

ty:您的方法更聪明。无需爆炸。
dole doug

如果$ query_date来自php的'dmY'格式:'02 -04-2010'怎么办?在我的测试中,一切正常,但也许我没有测试所有情况。我是否必须转换为Ymd或strtotime,还是要理解它。
dole doug

支持“ dmY”格式。支持的格式在http://ca2.php.net/manual/en/datetime.formats.date.php中列出 。
Francois Deschenes 2011年

我找不到“ t”值的定义位置。你能指出我正确的方向吗?
史蒂文

我在整个网络上搜索了很多次。这是一个巧妙的解决方案。谢谢弗朗索瓦。
manju4ever 2015年

22

我知道这个问题的答案很好,但我想我会添加另一个解决方案。

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

该解决方案是错误的,因为问题是关于“给定的月份”的,但是您的答案仅适用于当前月份。
Christopher Thomas

18

如果您使用的是PHP 5.3+,请尝试此操作

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

等等..



2

基本上:

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

Date t参数返回当月的天数。


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

2
$month = 10; // october

$firstday = date('01-' . $month . '-Y');
$lastday = date(date('t', strtotime($firstday)) .'-' . $month . '-Y');

0

仅打印当前月份的周:

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

0
## Get Current Month's First Date And Last Date

echo "Today Date: ". $query_date = date('d-m-Y');
echo "<br> First day of the month: ". date('01-m-Y', strtotime($query_date));
echo "<br> Last day of the month: ". date('t-m-Y', strtotime($query_date));

3
在使用现有答案为较旧的问题添加答案时,解释您的答案为问题带来了哪些新方面很有用。如果时间的流逝影响了答案,那么也要承认。
詹森·艾勒
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.