2010-11-12 85 views
22

我需要声明"Ymd"格式的两个日期:$toDate$fromDate如何从今天的日期减去4个月?

$toDate代表今天的日期,$fromDate需要比今天提前4个月。

$toDate = Date('Ymd'); 
$fromDate = ? 

如何创建$fromDate

回答

57

使用strtotime魔力:

$fromDate = date("Ymd", strtotime("-4 months")); 
+0

在十二月三十一日,我试图相同的代码,并试图如上所述减去1个月,它返回了我2012年12月1日的日期,但我期待着11月30日。它是预期的结果还是它的一个错误? – 2012-12-31 05:45:14

+0

@Mubashar我想这是设计!两种方法(你的和strtotime的)可以说同样有效。 – 2012-12-31 11:48:05

+0

是的,这是真的 – 2013-01-02 05:22:15

8

看到下面的代码......今天

$fourmonthsback = date("Ymd", mktime(0, 0, 0, date("m")-4, date("d"), date("Y"))); 

OR

$fourmonthsback = mktime(0, 0, 0, date("m")-4, date("d"), date("Y")); 
+2

这将不会在一月,二月,三月或四月,因为月份将是0或负数。 – cypher 2010-11-12 10:02:20

+8

@cypher - 其实mktime做日期算术。如果将月份参数设置为小于1 mktime,则会选择较早的月份。如果将月份设置为0,那么mktime会将整个日期修改为上一年的12月份。除了时区之外,该算法适用于mktime的所有参数。 – emurano 2010-11-12 10:11:01

+0

真的吗?对不起,那我不知道。 – cypher 2010-11-12 11:30:25

相关问题