2012-01-30 175 views
2

我想串月份名称转换为月数,月份名称到月份编号 - 03月份是2月份?

,但为什么会在结果“03”“二月”中,

strtolower(date('m', strtotime('Feb'))); 

我与其他测试他们似乎很好,

strtolower(date('m', strtotime('Jan'))); // 01 
strtolower(date('m', strtotime('Mar'))); // 03 

什么做错了?

+7

因为今天是第30。尝试为每个字符串添加'1st' – 2012-01-30 12:35:18

+3

确实:尝试'strtolower(date('m',strtotime('Feb')))' – lonesomeday 2012-01-30 12:36:13

+1

您还没有指定日期和年份。在任何情况下,你遇到一个具体的PHP函数的问题,请首先阅读有关它的手册条目:http://php.net/strtotime – hakre 2012-01-30 12:41:53

回答

2

php.net manual

函数需要接受一个包含英语日期 格式的字符串,并会尝试解析格式为Unix时间戳(因为 秒数1970年00年1月1 :00:00 UTC),相对于现在给出的 时间戳,或者当前时间(如果现在不提供)

这导致今天的日期(1月30日)和“2月”=> 2月30日的混合 - 但这不是有效的日期,所以PHP返回3月的月份数。

试图像

strtotime('01 Feb') 

应该解决的问题。

+0

明白了。感谢schnaader的答案。 – laukok 2012-01-30 12:46:10

2

因为今天是1月第30个。你没有提供一天数字,所以php假设今天是2月30日。然后它意识到是无效的,所以它继续到3月2日,困惑的事情。

+0

感谢罗布的答案。 – laukok 2012-01-30 12:46:31

+1

3月1日,实际上,自2月29日以来*今年*确实存在。 – lonesomeday 2012-01-30 14:21:23