我今天在StackOverflow上遇到了这个问题,但没有得到答案。
我的问题是
echo date('Y-m-d',strtotime('2012-september-09')); // output - 2012-09-01
echo date('Y-m-d',strtotime('09-september-2012')); // output - 2012-09-09
编码板
我很困惑为什么第一种格式不能产生正确的答案。有什么帮助吗?
来自手册:
如果分隔符是斜线(/),则假定为美国m/d/y;而如果分隔符是短划线(-)或点(.),则假定为欧洲d-m-y格式。
这不是date
函数的行为,而是strtotime
函数的行为。strtotime
只能处理"日期格式"手册页面上列出的特定格式的日期。09-september-2012
采用此处列出的dd ([ 't.-])* m ([ 't.-])* y
格式,但2012-september-09
与任何支持的格式都不匹配。
我认为在您的代码中,
echo date('Y-m-d',strtotime('2012-september-09'));
strtotime('2012-september-09')
不是strtotime()
日期函数的有效格式('2012-september-09')。
请参阅此链接http://www.php.net/manual/en/datetime.formats.date.php