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

Posted

技术标签:

【中文标题】PHP - 如果日期小于明年一月【英文标题】:PHP - If date is less than next January 【发布时间】:2012-01-17 17:37:24 【问题描述】:

我要编写一个函数,如果它在两个日期之间,它将返回一个特定的日子...我一直在尝试使用 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));

【问题讨论】:

【参考方案1】:

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

php 的月份是从 1 开始的。试试

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

改为。

【讨论】:

【参考方案2】:

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

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

【讨论】:

【参考方案3】:

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

【讨论】:

以上是关于PHP - 如果日期小于明年一月的主要内容,如果未能解决你的问题,请参考以下文章

使用 Python 在日期末尾添加一年

java 获取某一月的所有周的日期段(周一到周日)

算法:根据周数获取明年日期工作班次类型

excel中,知道入职日期和离职日期,怎么求一月在职人数?急求……

为啥“YYYY-MM-DD”日期格式的两个字符串在PHP中的小于或大于比较工作,即使它们是字符串?

MySQL中, 如何查询某一天, 某一月, 某一年的数据.