2012-01-17 6 views
0

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

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

$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 

} 

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

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

ответ

4

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

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

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

вместо этого.

0

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

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

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

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

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