PHP获取给定月份的最后一天

15
我想要输出当前年份给定月份的最后一天和第一天。我使用了以下代码,但不起作用。
$month='02';
$first_day_this_month = date('Y-'.$month.'-01'); // hard-coded '01' for first day
$last_day_this_month  = date('Y-'.$month.'-t');

echo $first_day_this_month;print'<->';echo $last_day_this_month;

我的输出显示
2015-02-01<->2015-02-31

但是它将是2015-02-01<->2015-02-28


使用以下代码获取时间戳:strototime("last day of February 2015"); - 示例 - Darren
混合使用echoprint?真是可惜! - Mr. Llama
4个回答

23

我之前也遇到了PHP的这个问题,尝试以下方法:

$dateToTest = "2015-02-01";
$lastday = date('t',strtotime($dateToTest));

1
strtotime会在2038年后崩溃吗? - 4 Leave Cover
4
21年后,我怀疑我们所知道的Unix时间戳将不再存在。但如果“Y2K”问题仍然让你感到担忧,那么对于MySQL,请将日期存储为DATETIME而不是TIMESTAMP。 - Ushal Naidoo
这并不回答问题。请查看以下问题:https://dev59.com/MHI-5IYBdhLWcg3wwbdM - Bilbo

11
你可以使用DateTime方法
$month = '02';

$date = new DateTime(date('Y').'-'.$month.'-01');
$date->modify('last day of this month');
$last_day_this_month = $date->format('Y-m-d');

6

有很多方法可以实现这个功能,我给您提供两个答案/想法:

1- 尝试使用PHP函数strtotimehttp://php.net/manual/es/function.strtotime.php)。

类似于date("Y-m-d", strtotime("last day of this month"));或第一天…… 或任何一个月份。

2- 您还可以使用以下方式:

第一天:

date("Y-m-d", mktime(0, 0, 0, *YOUR MONTH PARAM*,1 ,date("Y")));

昨天:

date("Y-m-d", mktime(0, 0, 0, *YOUR MONTH PARAM*+1,0,date("Y")));

在这里阅读关于mktime函数的信息:

http://php.net/manual/zh/function.mktime.php

祝好运!


请记住,如果可以的话,请不要硬编码! - Agustin Silva Albistur

4
你可以使用DateTime类实现。
    $month='02';
    $first_day_this_month = date('Y-'.$month.'-01');

    $firstDayThisMonth = new \DateTime($first_day_this_month);

    $lastDayThisMonth = new \DateTime($firstDayThisMonth->format('Y-m-t'));
    $lastDayThisMonth->setTime(23, 59, 59);

    echo $firstDayThisMonth->format("Y-m-d");
    echo "<->";
    echo $lastDayThisMonth->format("Y-m-d");

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接