PHP - если дата меньше, чем следующий январь

Я должен написать функцию, которая будет возвращать определенный день, если он находится между двумя датами... Я пытался использовать mktime, но он продолжает возвращать декабрь?

По сути, я пытаюсь сделать это:

$now = date('F d, Y');

if($now [is Between July of last year and January of next year] ) {

  //Output last day of January in this year

} elseif($now [is Between January of this year and July of this year]) {

  //Output last day of July for next year

}

Я немного смущен тем, нужно ли мне использовать mktime или strtotime? Чтобы определить январь следующего года, я попытался ниже, но он вернул декабрь 2012 года?

$jan = date("F,Y", mktime(0, 0, 0, 1, 0, $year+1));

person user1154488    schedule 17.01.2012    source источник


Ответы (3)


День 0 января 2012 года на самом деле 31 декабря 2011 года.

Месяцы PHP отсчитываются от 1. Пытаться

$jan = date("F,Y", mktime(0, 0, 0, 1, 1, $year+1));
                                      ^--- 1st, not 0th

вместо.

person Marc B    schedule 17.01.2012

Параметр дня должен быть равен 1 вместо 0. См. http://php.net/manual/en/function.mktime.php для получения подробной информации.

date("F,Y", mktime(0, 0, 0, 1, 1, $year+1));
person MrKiane    schedule 17.01.2012

Параметр day в mktime должен быть 1 вместо 0:

mktime(0, 0, 0, 1, 1, $year+1);

В противном случае он будет думать, что это «0 января», что переводится как «1 января минус 1 день» = «31 декабря предыдущего года».

На самом деле вы можете использовать это поведение, чтобы добавлять и вычитать дни (или что-то еще) к датам, например:

mktime(0, 0, 0, 1, 67, 2012); //returns the correct date for the 67th day of 2012
person cambraca    schedule 17.01.2012