我正在尝试使用strttotime
获取给定日期的下一个monday
,但我从Jan 1970
获取日期作为输出。下面是我的代码行,是为下周一的获取日期编写的,我从这里得到了这段代码。谁能帮我理解为什么会发生这种情况。提前谢谢。
法典:
$date_init = date('Y m d', strtotime('next monday', strtotime('2016 06 22')));
预期输出:
2016 06 27
实际输出:
1970 01 05
根据手册,字符串2016 06 22
不是有效的日期格式。尝试添加连字符:
$date_init = date('Y m d', strtotime('next monday', strtotime('2016-06-22')));
您可以在此处找到所有有效的日期格式:http://php.net/manual/en/datetime.formats.date.php
试试这个:
$date_init = date('Y m d', strtotime('next monday', strtotime('22-06-2016')));
"2016 06 22"需要格式化为此处提到的格式之一
2016 06 02
不是PHP文档中描述的可接受的日期格式之一。因此,如果无法解析给定的时间字符串,则对strtotime
的内部调用将返回文档中定义的FALSE
。
由于这不是$now
参数的外部strtotime
的有效输入,因此它采用纪元或 1970 年 1 月 1 日作为其计算的基础。
结果,你最终得到的是 1970 年 1 月 1 日之后的下一个星期一。
从初始日期字符串中删除空格将解决此问题:
$date_init = date('Y m d', strtotime('next monday', strtotime('20160622')));