/**
* Last date of a month of a year
*
* @param[in] $date - Integer. Default = Current Month
*
* @return Last date of the month and year in yyyy-mm-dd format
*/
function last_day_of_the_month($date = '')
{
$month = date('m', strtotime($date));
$year = date('Y', strtotime($date));
$result = strtotime("{$year}-{$month}-01");
$result = strtotime('-1 second', strtotime('+1 month', $result));
return date('Y-m-d', $result);
}
$a_date = "2009-11-23";
echo last_day_of_the_month($a_date);
public function get_number_of_days_in_month($month, $year) {
// Using first day of the month, it doesn't really matter
$date = $year."-".$month."-1";
return date("t", strtotime($date));
}
这将输出如下:
echo get_number_of_days_in_month(2,2014);
产量:28
4
有办法获得一个月的最后一天 .
//to get last day of current month
echo date("t", strtotime('now'));
//to get last day from specific date
$date = "2014-07-24";
echo date("t", strtotime($date));
//to get last day from specific date by calendar
$date = "2014-07-24";
$dateArr=explode('-',$date);
echo cal_days_in_month(CAL_GREGORIAN, $dateArr[1], $dateArr[0]);
23 回答
我知道这有点晚了但我认为使用DateTime类使用
PHP 5.3+
有更优雅的方法:t
返回给定日期的月份天数(请参阅the docs for date):使用strtotime()的代码将在2038年后失败 . (如此线程中的第一个答案所示)例如,尝试使用以下代码:
它将给出答案:1970-01-31
因此,应该使用DateTime函数而不是strtotime . 以下代码将在没有2038年问题的情况下运行:
还有内置的PHP函数 cal_days_in_month() ?
这应该工作:
您可以为下个月的第一天创建日期,然后使用
strtotime("-1 day", $firstOfNextMonth)
有什么不对 - 对我来说最优雅的是使用DateTime
我不知道我没看到DateTime::createFromFormat,单行
你的解决方案在这里..
试试这个,如果您使用的是PHP 5.3,
要查找下个月的最后日期,请修改如下,
等等..
如果您对PHP DateTime使用Carbon API扩展,则可以使用以下命令获取该月的最后一天:
您也可以将它与日期时间一起使用
你可以找到几个月的最后一天 . 但只是你可以使用PHP strtotime()和date()函数来做到这一点 . 我想你的最终代码看起来像这样:
Live Demo
但是如果你使用PHP> = 5.2我强烈建议你使用新的DateTime对象 . 例如如下:
Live Demo
此外,您可以使用自己的功能解决此问题,如下所示:
使用Zend_Date非常简单:
这是一个完整的功能:
这将输出如下:
产量:28
有办法获得一个月的最后一天 .
我迟到了,但有一些简单的方法可以做到这一点:
使用mktime()是我完全控制时间的各个方面... I.E.
将日期设置为0并将月份设置为1将为您提供上个月的最后一天 . 0和负数在不同的争论中具有相似的影响 . PHP: mktime - Manual
正如少数人所说,strtotime不是最坚实的方式,如果没有那么容易多才多艺 .
http://zkinformer.com/?p=134
我已将它包装在我的日期时间助手类中https://github.com/normandqq/Date-Time-Helper使用
$dateLastDay = Model_DTHpr::getLastDayOfTheMonth();
它完成了
使用 mktime 而不是日期('t')的另一种方式:
所以这样计算它是31,30还是29
Carbon PHP DateTime的API扩展
要么
将重新开始
这是一个更优雅的方式来结束这个月:
您可以在日期函数中使用“
t
”来获取特定月份中的天数 .代码将是这样的:
代码是自我解释的 . 所以希望它有所帮助 .