我试图根据今天的日期获得最后一个11月1日的日期。
。今天是2016-09-23,所以最后一个11月1日应该是2015-11-01。
如果今天的日期是2016-11-20,那么最后一个11月1日就是2016-11-01。
我有以下代码,它只拉出当年的11月1日。
$last_november = date('Y-m-d', strtotime('1st november'));
有人能帮忙吗?
谢谢,约翰
使用
$date = date('Y-m-d');
$lastNovember = date('Y-m-d', strtotime('1st november'));
$year = '';
//decrement the year's value by 1 to get previous year november's first date
if ($date < $lastNovember) {
$year = date('Y') - 1;
$lastNovember = date('Y-m-d', strtotime("1st november {$year}"));
}
var_dump($lastNovember);
。e,如果当前日期小于今年11月的日期,使用上一年
我们需要知道的是当前日期是在11月1日之前还是之后。如果我们在11月1日之前,那么最后一个11月1日是去年,否则就是今年(包括如果今天是11月1日)。
$year = date('Y'); // start with the current year
if (date('nd') < 1101) {
// we are before 1st November so the last one was last year
$year--;
}
$last_november = $year . '-11-01';
或者如果你想在一行中显示,
$last_november = (date('nd') < 1101 ? (date('Y')-1) : date('Y')) . '-11-01';
注意:一个潜在的问题是如何在比较(date('nd') < 1101)
中书写日期。匹配日期格式nd
。写月份的时候不要有任何前导0,但是总是用两个字符来写日期(如果需要的话可以有一个前导0)。1月1日是101
, 1月20日是120
, 11月17日是1117
等。见http://php.net/manual/en/function.date.php