我正在尝试获取下一个“本月第二个星期日”的时间戳,无论是当月还是下个月。
要求是使用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 :(得分:5)
试试这个:
strtotime('+2 week Sunday')
击> <击> 撞击>
新答案: 我认为你期待strtotime过于聪明。通过不在字符串中提供月份或第二个参数,它只能假定为“当前时间”。
如果不是“过去的第二个星期日,或者下个月的第二个星期日”,那么对“条件”没有任何支持。
IMO将这样的东西添加到strtotime会使它太复杂而无法在正常操作中使用。正确的解决方案很可能是对strtotime进行两次调用(第一次查看当前月份是否已经过去,第二次仅在我们需要下个月时)。
我不知道为什么你的约束存在,但你应该开始弄清楚如何改变约束。
答案 1 :(得分:1)
// second sun next month
strtotime('+0 month +2 week sun');
答案 2 :(得分:1)
有关“下个月问题”的讨论,请检查http://derickrethans.nl/obtaining-the-next-month-in-php.html
答案 3 :(得分:1)
要解决这个问题,您只需要规范化到当月的第一天。所以说你想要三月的第二个星期日用于夏令时。
date('m/d/Y',strtotime('03/01/2011 second sunday'));
或更一般地
date('m/d/Y',strtotime('03/01'.date('Y').' second sunday'));
希望这有帮助。
答案 4 :(得分:1)
这些建议都不适合我。
这是做了什么:
date('m/d/Y', strtotime('Second Sunday Of March 2015'));
答案 5 :(得分:0)
您尝试过吗?
strtotime('second sunday of this month');