在PHP中,有没有简单的方法来获得一个月的第一个和最后一个date?
我只需要以月份和年份给出YYYY-MM-DD格式的月份的第一天和最后一天。 有没有一个好的,简单的方法来做到这一点?
$first = date('Ym-d', mktime(0, 0, 0, $month, 1, $year)); $last = date('Ym-t', mktime(0, 0, 0, $month, 1, $year));
在PHP文档中查看date() 。
第一天总是YYYY-MM-01,不是吗? 例如: date("YMd", mktime(0, 0, 0, 8, 1, 2008))
最后一天是下个月第一天的前一天:
$date = new DateTime("2008-09-01"); $date->modify("-1 day"); echo $date->format("Ymd");
一个月的第一天总是1.所以它会成为
YYYY-MM-01
最后一天可以计算为:
<?php $num = cal_days_in_month(CAL_GREGORIAN, 8, 2003); // 31 echo "There was $num days in August 2003"; ?>
好的,首先是很容易的。
date ('Ym-d', mktime(0,0,0,MM,01,YYYY));
最后是有点棘手,但不是很多。
date ('Ym-d', mktime(0,0,0,MM + 1,-1,YYYY));
如果我记得我的PHPdate的东西正确…
**编辑 – 加耶! 打了一百万次
Pat编辑:
最后一天应该是
date ('Ym-d', mktime(0,0,0,$MM + 1,0,$YYYY)); // Day zero instead of -1
<?php echo "Month Start - " . $monthStart = date("Ym-1") . "<br/>"; $num = cal_days_in_month(CAL_GREGORIAN, date("m"), date("Y")); echo "Monthe End - " . $monthEnd = date("Ym-".$num); ?>
顺便说一句@ZombieSheep解决scheme
date ('Ym-d', mktime(0,0,0,$MM + 1,-1,$YYYY));
不应该这样做
date ('Ym-d', mktime(0,0,0,$MM + 1,0,$YYYY)); // Day zero instead of -1
当然@MichałSłaby公认的解决scheme是最简单的。
只是为了validation我没有错过任何松散的结局:
$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('Ym-d', mktime(0, 0, 0, $startMonth , $startDay, $startYear)); $endDate = date('Ym-d', mktime(0, 0, 0, $endMonth, $endDay, $endYear));
用PHP做这件事最简单的方法是
$dateBegin = strtotime("first day of last month"); $dateEnd = strtotime("last day of last month"); echo date("MYDATEFORMAT", $dateBegin); echo "<br>"; echo date("MYDATEFORMAT", $dateEnd);
或者上个星期
if (date('N', time()) == 7) { $dateBegin = strtotime("-2 weeks Monday"); $dateEnd = strtotime("last Sunday"); } else { $dateBegin = strtotime("Monday last week"); $dateEnd = strtotime("Sunday last week"); }
或去年
$dateBegin = strtotime("1/1 last year"); $dateEnd = strtotime("12/31 this year");
试试这个来得到月份的天数:
$numdays = date('t', mktime(0, 0, 0, $m, 1, $Y));
例; 我想获得当月的第一天和最后一天。
$month = (int) date('F'); $year = (int) date('Y'); date('Ym-d', mktime(0, 0, 0, $month + 1, 1, $year)); //first date('Ym-d', mktime(0, 0, 0, $month + 2, 0, $year)); //last
当你在2015-01-09这个date运行这个时,第一个和最后一个值将被依次;
2015-01-01 2015-01-31
testing。