2011-02-24 131 views
2

我试图获取下一个“本月第二个星期日”的时间戳,不管它是在当前月还是在下个月PHP strtotime - 获取第二个最近的“本月第二个星期日”

需求是使用strtotime函数,只有一次,没有第二个参数,没有更多(这些约束来自遗留代码)。
基本上PHP代码来获取一定是唯一的:

strtotime('_a_string_here_'); 

和字符串必须是一个通用的字符串。它不能包含'feb 2011'之类的东西。
基本上我可以放一个静态字符串作为strtotime函数的第一个参数。

我已经尝试了所有的这些,但他们不给我我想要的(现在的日期是周四2011-02-24):
strtotime('second sunday') //返回“2011-03-06 00:00: 00'
strtotime('second sunday of the month ') // 1970-01-01 00:00:00
strtotime('+0 month second sun') //返回 '2011-03-06 00:00:00'

感谢,

+0

尝试“第二个星期日”相对于“2001年2月1日”(第二个参数),但要小心,如果一开始的一天是星期日 – 2011-02-24 15:43:18

+0

对不起,我加我不能使用第二个参数。反正为了得到2011-02-01,我需要调用另一个PHP函数(这是对约束) – dan 2011-02-24 15:47:18

+1

可能更改标题是“的strtotime”而不是“用strtolower” – DTest 2011-02-24 16:08:00

回答

4

试试这个:

strtotime('+2 week Sunday') 

新建答案: 我想你期待的strtotime是太聪明了。通过不提供一个月的字符串或第二个参数,它只能假设'当前时间'。

对于像'本月的第二个星期日如果不是过去,否则下个月的第二个星期天'这样的条件,没有任何词支持。

海事组织将类似这样的东西添加到strtotime会使它太复杂,无法在正常操作中使用。正确的解决方案很可能是两次打电话给strtotime(首先查看当前月份是否过去,仅当我们需要下个月才查看时间)。

我不知道为什么你的约束条件存在,但你应该开始研究如何改变约束条件。

+0

这是相同的解决方案powtac。不幸的是,每天都不工作,只有当一天超出了本月的第二个星期日 – dan 2011-02-24 16:09:51

+0

它不在下个月... – powtac 2011-02-24 16:09:56

+0

添加了一个新的答案,因为目前的约束似乎不可能 – DTest 2011-02-24 16:39:54

1
// second sun next month 
strtotime('+0 month +2 week sun'); 
+1

该字符串必须是通用的,即没有指定任何特定的日期。 – dan 2011-02-24 15:49:29

+0

我改成了代码并提出了解决方案。 – powtac 2011-02-24 16:00:39

+0

这不起作用。 INFACT如果我使用“的strtotime(‘+0月4周太阳’)”,即返回三月的第四个星期天,即使月份的下一个第四个星期日仍然在二月 – dan 2011-02-24 16:02:14

1

为了解决这个问题,你只需要正常化的第一个问题的一个月。所以说你想要三月的第二个星期天用于夏令时。

date('m/d/Y',strtotime('03/01/2011 second sunday')); 

或更一般

date('m/d/Y',strtotime('03/01'.date('Y').' second sunday')); 

希望这有助于。

1

没有任何建议为我工作。

这里就是虽然做的:

date('m/d/Y', strtotime('Second Sunday Of March 2015')); 
相关问题