我很难过为什么下面的PHP strtotime函数返回'07'作为月号,而不是'06'当$ monthToGet ='June'时:
$monthToGet = $_GET['mon'];
$monthAsNumber = date('m', strtotime($monthToGet));
从搜索开始,它似乎可能是由于我没有指定默认日期参数(在这种情况下是日期和年份)。那会是原因吗?
任何建议都赞赏!
答案 0 :(得分:5)
你是对的
echo date("m", strtotime("June"));
-> 07
但是,此确实有效:
echo date("m", strtotime("1. June 2012"));
-> 06
今天是31. July 2012
,由于您只提供了一个月,因此当前日期和当前年份用于创建有效日期。
请参阅documentation:
注意强>
该函数期望给出一个包含英文日期格式的字符串,并尝试将该格式解析为Unix时间戳(自1970年1月1日00:00:00 UTC以来的秒数),相对于给定的时间戳。现在,或者现在没有提供当前时间。
您可以使用date_parse_from_format()
或strptime()
以稍微不同的方法实现您的目标。
(感谢johannes_和johann__的输入)
答案 1 :(得分:1)
答案 2 :(得分:1)
今天是7月31日。因此只有strtotime
的{{1}}被解释为"June"
=> 31 June
。
事实上:
1 July
当然......只有echo date("Y-m-d",strtotime("January")); // 2012-01-31
echo date("Y-m-d",strtotime("February")); // 2012-03-02
:)明天一切都会有用。
你很幸运,因为你今天发现了这个bug;)