为何FrozenDate::parseDate无法解析含Sep(九月)的日期?
问题:FrozenDate::parseDate无法解析Sep缩写的九月日期
问题描述
调用FrozenDate::parseDate解析dd-MMM-yy格式的日期时,月份缩写为Sep(九月)时会返回null,无法正常解析,其他月份则无异常。
复现代码
$months = ['Jan','Feb','Mar','Apr','May','Jun','Jul','Aug','Sep','Oct','Nov','Dec']; foreach($months as $m) { $d = "01-".$m."-23"; debug($d); $fd = FrozenDate::parseDate($d, "dd-MMM-yy"); debug($fd); }
输出:
APP/Controller\AdministratorsController.php (line 202) '01-Sep-23' APP/Controller\AdministratorsController.php (line 204) null
排查过程
- 调用
FrozenDate::getLastErrors()未获取到任何错误信息:
输出:debug(FrozenDate::getLastErrors());[ 'warning_count' => (int) 0, 'warnings' => [ ], 'error_count' => (int) 0, 'errors' => [ ], ] - 测试发现使用月份缩写Sept时可正常解析,但用户从Excel导入的日期格式为Sep,且Excel会将
01-Sept-23自动转换为01-Sep-2023。
解决方案
在调用parseDate()之前,将默认区域设置为en_US(经测试en_CA无效):
FrozenDate::setDefaultLocale("en_US");//en_CA doesn't work
内容的提问来源于stack exchange,提问作者TechFanDan
相关产品推荐
相关产品推荐

