php DateTime createFromFormat功能
发布时间:2020-12-13 13:23:45 所属栏目:PHP教程 来源:网络整理
导读:嗨,我似乎无法让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'
嗨,我似乎无法让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 = 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. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |