PHP - Если дата меньше января следующего года - PullRequest
0 голосов
/ 17 января 2012

Я должен написать функцию, которая будет возвращать определенный день, если он находится между двумя датами ... Я пытался использовать 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));

Ответы [ 3 ]

4 голосов
/ 17 января 2012

День 0 января 2012 года - фактически 31 декабря 2011 года.

Месяцы PHP основаны на 1.Попробуйте вместо

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

.

1 голос
/ 17 января 2012

Параметр дня должен быть 1 вместо 0. Подробнее см. http://php.net/manual/en/function.mktime.php.

date("F,Y", mktime(0, 0, 0, 1, 1, $year+1));
0 голосов
/ 17 января 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
...