2016-09-23 2 views
0

Я пытаюсь получить последнюю дату 1 ноября на основе сегодняшней даты.Получить последнюю дату 1 ноября

E.g. сегодня 2016-09-23, поэтому последний 1 ноября будет 2015-11-01.

Если сегодняшняя дата 2016-11-20, последний 1 ноября будет 2016-11-01.

У меня есть следующий код, который просто тянет 1 ноября текущего года.

$last_november = date('Y-m-d', strtotime('1st november')); 

Может ли кто-нибудь помочь?

Спасибо,

Джон

ответ

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

т.е. использовать предыдущий год, если текущая дата меньше чем дата в этом году Ноя в

+0

Отлично, спасибо! –

0

Все, что нам нужно знать если текущая дата предшествует или после 1 ноября. Если мы до 1 ноября, то последний 1 ноября был в прошлом году, иначе это было в этом году (в том числе, если сегодня 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 января - 101, 20 января - 120, 17 ноября - 1117 и т. Д. См. http://php.net/manual/en/function.date.php