0

出于某种计算目的,我需要获取给定月份的结束日期,

我怎么能在 PHP 中做到这一点,我尝试使用 date() 函数,但它没有用。

我用这个:

date($year.'-'.$month.'-t');

但这给出了当前月份的结束日期。我想我在某个地方错了,我找不到我要去哪里错了。

如果我将年份设为 2012 并将月份设为 03,那么它必须显示为 2012-03-31。

4

9 回答 9

4

此代码将为您提供特定月份的最后一天。

$datetocheck = "2012-03-01";
$lastday = date('t',strtotime($datetocheck));
于 2012-05-28T06:46:03.423 回答
2

您想用以下方式替换您的date()电话:

date('Y-m-t', strtotime($year.'-'.$month.'-01'));

第一个参数 todate()是您要返回的格式,第二个参数必须是 unix 时间戳(或不传递以使用当前时间戳)。在您的情况下,您可以使用函数生成时间戳strtotime(),将日期字符串传递给它,其中包含年、月和 01 日。它将返回相同的年份和月份,但-t格式中的 将替换为该月的最后一天。

如果您只想返回没有年份和月份的月份的最后一天:

date('t', strtotime($year.'-'.$month.'-01'));

只需't'用作您的格式字符串。

于 2012-05-28T06:48:46.040 回答
1

这个月:

echo date('Y-m-t');

任何月份:

echo date('Y-m-t', strtotime("$year-$month-1"));
于 2012-05-28T06:47:28.490 回答
0

试试下面的代码。

$m = '03';//
$y = '2012'; //

$first_date = date('Y-m-d',mktime(0, 0, 0, $m , 1, $y));

$last_day   = date('t',strtotime($first_date));
$last_date = date('Y-m-d',mktime(0, 0, 0, $m ,$last_day, $y));
于 2012-05-28T06:45:27.827 回答
0
function lastday($month = '', $year = '') {
   if (empty($month)) {
      $month = date('m');
   }
   if (empty($year)) {
      $year = date('Y');
   }
   $result = strtotime("{$year}-{$month}-01");
   $result = strtotime('-1 second', strtotime('+1 month', $result));
   return date('Y-m-d', $result);
}
于 2012-05-28T06:45:47.963 回答
0
    function firstOfMonth() {
return date("Y-m-d", strtotime(date('m').'/01/'.date('Y').' 00:00:00')). 'T00:00:00';}

function lastOfMonth() {
return date("Y-m-d", strtotime('-1 second',strtotime('+1 month',strtotime(date('m').'/01/'.date('Y').' 00:00:00')))). 'T23:59:59';}

$date1 = firstOfMonth();
$date2  = lastOfMonth();

试试这个,这会给你当前月份的开始和结束日期。

于 2012-05-28T06:46:23.327 回答
0
date("Y-m-d",strtotime("-1 day" ,strtotime("+1 month",strtotime(date("m")."-01-".date("Y")))));
于 2012-05-28T06:47:03.483 回答
0
function getEndDate($year, $month)
{
   $day = array(1=>31,2=>28,3=>31,4=>30,5=>31,6=>30,7=>31,8=>31,9=>30,10=>31,11=>30,12=>31);
   if($year%100 == 0)
   {
       if($year%400 == 0)
         $day[$month] = 29;
   }
   else if($year%4 == 0)
       $day[$month] = 29;

   return "{$year}-{$month}-{$day[$month]}";
}
于 2012-05-28T06:52:05.630 回答
0

如果您使用的是 PHP >= 5.2,我强烈建议您使用新的 DateTime 对象。例如如下:

$a_date = "2012-03-23";
$date = new DateTime($a_date);
$date->modify('last day of this month');
echo $date->format('Y-m-d');
于 2017-02-11T04:03:28.603 回答