获取11月1日的最后日期

时间:2016-09-23 10:25:57

标签: php

我试图根据今天的日期获得11月1日的最后日期。

E.g。今天是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'));

有人可以帮忙吗?

谢谢,

约翰

2 个答案:

答案 0 :(得分:2)

使用此:

$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);

,如果当前日期少于今年11月的日期,则使用前一年

答案 1 :(得分:0)

我们需要知道的是,当前日期是在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