0

我要编写一个函数,如果它在两个日期之间,它将返回一个特定的日子......我一直在尝试使用 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 感到有些困惑?为了确定明年一月,我在下面尝试了,但它返回了 2012 年 12 月?

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

3 回答 3

4

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

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

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

反而。

于 2012-01-17T17:40:24.613 回答
1

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

date("F,Y", mktime(0, 0, 0, 1, 1, $year+1));
于 2012-01-17T17:42:58.743 回答
0

中的day参数mktime应该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
于 2012-01-17T17:42:49.040 回答