在PHP中,是否有一种简单的方法来获取一个月的第一个和最后一个日期?

时间:2020-03-05 18:47:33  来源:igfitidea点击:

我只需要给出月份和年份,就可以获取格式为YYYY-MM-DD的月份的第一天和最后一天。有没有一种简便的好方法可以做到这一点?

解决方案

回答

第一天总是YYYY-MM-01,不是吗?例如:date(" Y-M-d",mktime(0,0,0,8,1,2008))

最后一天是下个月第一天的前一天:

$date = new DateTime("2008-09-01");
$date->modify("-1 day");
echo $date->format("Y-m-d");

回答

该月的第一天始终为1.
所以它将成为

YYYY-MM-01

最后一天可以计算为:

<?php
    $num = cal_days_in_month(CAL_GREGORIAN, 8, 2003); // 31
    echo "There was $num days in August 2003";
?>

回答

$first = date('Y-m-d', mktime(0, 0, 0, $month, 1, $year));
$last = date('Y-m-t', mktime(0, 0, 0, $month, 1, $year));

请参阅PHP文档中的date()。

回答

好,首先很容易。

date ('Y-m-d', mktime(0,0,0,MM,01,YYYY));

最后有点棘手,但不多。

date ('Y-m-d', mktime(0,0,0,MM + 1,-1,YYYY));

如果我正确记得我的PHP日期资料...

**编辑Gah!被殴打约一百万次...

帕特编辑:

最后一天应该是

date ('Y-m-d', mktime(0,0,0,$MM + 1,0,$YYYY)); // Day zero instead of -1

回答

顺便说一句@ZombieSheep解决方案

date ('Y-m-d', mktime(0,0,0,$MM + 1,-1,$YYYY));

不起作用应该是

date ('Y-m-d', mktime(0,0,0,$MM + 1,0,$YYYY)); // Day zero instead of -1

当然@Micha吗?萨比的公认解决方案是最简单的。

回答

只是为了确认我没有错过任何失败的结局:

$startDay = 1;

if (date("m") == 1) {
    $startMonth = 12;
    $startYear = date("Y") - 1;

    $endMonth = 12;
    $endYear = date("Y") - 1;
}
else {
    $startMonth = date("m") - 1;
    $startYear = date("Y");

    $endMonth = date("m") - 1;
    $endYear = date("Y");
}

$endDay = date("d") - 1;

$startDate = date('Y-m-d', mktime(0, 0, 0, $startMonth , $startDay, $startYear));
$endDate = date('Y-m-d', mktime(0, 0, 0, $endMonth, $endDay, $endYear));