php strtotime 函数
我使用 PHP 的 strtotime 函数将日期从一种格式转换为另一种格式 我有以下
$date = "12-22-2011";
echo $newDateFormat = date("Y-m-d", strtotime($date) );
// Output 1970-01-01
// But when i replace "-" with "/" I get proper output
$date = "12/22/2011";
echo $newDateFormat = date("Y-m-d", strtotime($date) );
// Output 2011-12-22
为什么? 或者是否有任何其他函数可以接受任何内容并转换为正确的日期格式?
I using PHP's strtotime function for converting date from one format to another
i have the following
$date = "12-22-2011";
echo $newDateFormat = date("Y-m-d", strtotime($date) );
// Output 1970-01-01
// But when i replace "-" with "/" I get proper output
$date = "12/22/2011";
echo $newDateFormat = date("Y-m-d", strtotime($date) );
// Output 2011-12-22
Why so ?
or is there any other function which accepts anything and convert to proper date format ?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
来自 strtotime 文档:
本质上,连字符日期被假定为 dmy,而不是 mdy。
对于自定义解析,请使用
DateTime::createFromFormat()
。From the strtotime documentation:
Essentially, hyphenated dates are assumed to be d-m-y, and never m-d-y.
For customised parsing, use
DateTime::createFromFormat()
.使用
dd-mm-yyyy
或mm-dd-yyyy
等格式不太安全:strtotime()
无法确定哪个格式您使用过的其中之一(想想06-11-2011
,例如:是在 6 月,还是 11 月?)。对于
strtotime()
,您通常最好使用yyyy-mm-dd
格式。如果您想以特定的已知格式解析日期,您应该使用 < strong>
DateTime::createFromFormat()
- 请注意,它仅适用于 PHP >= 5.3。Using a format such as
dd-mm-yyyy
ormm-dd-yyyy
is not quite safe :strtotime()
cannot know for sure which one of those you used (think about06-11-2011
, for example : is it in june, or in november ?).With
strtotime()
, you are generally better off usingyyyy-mm-dd
format.If you want to parse a date in a specific, known, format, you should use
DateTime::createFromFormat()
-- note it's only available for PHP >= 5.3.