2010-09-21 46 views
0

我想找到正确的字符串来修改DateTime对象。我有一个反复出现的日历对象:使用PHP日期/时间类我试图得到某些特定的日子

目前发现“这个下个月的日期”很简单:$ start_date-> modify('+ 1 month');

但是,我也在寻找'下个月的这一天'和'明年的这一天'。

找不到相关的字符串。 干杯

编辑:

因此,例如,如果我们把2010-09-21作为开始日期:

$start_date = new DateTime(20100921); 

查找下个月的当前日期(数值表示)会:

$start_date->modify('+1 month'); 

但是,找到下个月的当前日期(文本表示)正在给我带来更多麻烦。

This date is the third tuesday of this month - next month the third tuesday is the 19th 
+1

请澄清(可能是用小例子)你正在努力达到什么目的。 – bouke 2010-09-21 09:31:50

+0

“这个下个月的日期”和“下个月的这一天”之间有什么区别? – 2010-09-21 09:32:31

+0

请使用一些示例输入和期望的输出来制作一个伪代码示例(就像您将调用该函数一样)。 – 2010-09-21 09:36:55

回答

1

你可以为“下个月同一天”做这样的事情:

<?php 

switch(floor(date("d")/7)) { 
    case 0: 
    $which = "first"; 
    break; 
    case 1: 
    $which = "second"; 
    break; 
    case 2: 
    $which = "third"; 
    break; 
    case 3: 
    $which = "fourth"; 
    break; 
    case 4: 
    $which = "fifth"; 
    break; 
} 

echo date("c", strtotime(sprintf("%s %s of +1 month", $which, date("l")))); 

我不知道如果'明年的同一天(fiftysecond thuesday of +1 year)相同的工作,但你也可以如果你知道一年中的哪一天开始计算它,然后使用mktime()

+0

谢谢,这似乎是一个很好的计划 – kalpaitch 2010-09-21 10:59:05

相关问题