php DateTime createFromFormat功能

前端之家收集整理的这篇文章主要介绍了php DateTime createFromFormat功能前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
嗨,我似乎无法让datetime方法按预期工作?我可能做错了什么?
// Passes OK 
$dateTime = DateTime::createFromFormat('d/m/Y','12/12/2012' );
var_dump($dateTime);

// should fail but returns  - 2016-09-25 
$dateTime = DateTime::createFromFormat('d/m/Y','56/56/2012' );
var_dump($dateTime);

// correctly returns False 
$dateTime = DateTime::createFromFormat('d/m/Y','56/56/fail' );
var_dump($dateTime);

// should fail but returns 2019-08-29 09:58:10
$dateTime = DateTime::createFromFormat('m/d/Y','90/90/2012' );
var_dump($dateTime);
关于DateTime :: createFromFormat的事情是它识别出两种意外输入:产生错误的类型以及产生警告的类型.

诸如’56 / 56 / fail’之类的输入会产生错误,因此返回false并且一切都很好.然而,’56 / 56/2012’没有给出错误而是警告,并且实际上被解析为2012年第56个月的第56天.由于2012年没有56个月,PHP内部将此更改为2016年8个月= 8月2016年.由于那个月没有56天,我们还有2016年9月(56 – 31)天= 2016年9月25日的补偿.所以虽然出乎意料,但这实际上是正确的.

如果要禁止自动调整,则必须包装DateTime工厂方法并使用DateTime::getLastErrors作为参考:

$dateTime = DateTime::createFromFormat('d/m/Y','56/56/2012');
$errors = DateTime::getLastErrors();
if (!empty($errors['warning_count'])) {
    echo "Strictly speaking,that date was invalid!\n";
}

See it in action.

原文链接:https://www.f2er.com/php/137221.html

猜你在找的PHP相关文章