PHP - 如果日期小于明年1月

时间:2012-01-17 17:37:25

标签: php strtotime mktime date-arithmetic

我要编写一个函数,如果它在两个日期之间,它将返回特定日期...我一直在尝试使用mktime,但是它会在12月返回吗?

基本上,我正在尝试这样做:

$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感到有点困惑?为了确定明年1月,我试过下面,但它在2012年12月回归了?

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

3 个答案:

答案 0 :(得分:4)

2012年1月第0天实际上是2011年12月31日。

PHP的月份是从1开始的。尝试

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

代替。

答案 1 :(得分:1)

day参数应为1而不是0.有关详细信息,请参阅http://php.net/manual/en/function.mktime.php

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

答案 2 :(得分:0)

mktime中的day参数应为1而不是0

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

否则它会认为是“1月0日”,它被翻译为“1月1日减去1天”=“从去年12月31日”。

您实际上可以使用此行为将日期(或任何真正的日期)添加和减去日期,如下所示:

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