得到最后一个11月1日的日期


Get last 1st November date

我试图根据今天的日期获得最后一个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