FrozenDate::parseDate 不适用于 9 月

问题描述 投票:0回答:1

使用 9 月份(例如 Sep)调用

FrozenDate::parseDate
,日期没有被解析是否有原因?

代码:

$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

编辑#1

尝试使用

getLastErrors()
输出任何错误。那里也什么都没有。

debug(FrozenDate::getLastErrors());

APP/Controller\AdministratorsController.php (line 205)
[
'warning_count' => (int) 0,
'warnings' => [ ],
'error_count' => (int) 0,
'errors' => [ ],
]

编辑#2

似乎使用“Sept”有效。请注意,我是从 Excel 导入的,给出的格式是“Sep”而不是“Sept”。并且,出于某种原因,日期“01-Sept-23”在 Excel 中转换为“01-Sept-2023”。

$months = ['Jan','Feb','Mar','Apr','May','Jun','Jul','Aug','Sept','Oct','Nov','Dec'];

foreach($months as $m)
{
    $d = "01-".$m."-23";
    debug($d);
    $fd = FrozenDate::parseDate($d, "dd-MMM-yy");
    debug($fd);
}
php cakephp cakephp-4.x
1个回答
1
投票

CLDR/ICU 问题,在较新的版本中(不确定最新版本,现在无法测试),对于某些语言环境,要么引入

Sept
,要么删除
Sep
,反之亦然,或者某种组合或任何。从任何评论中我都不清楚,我真的不想浪费时间来调查它。

tl;博士,经典的 CLDR/ICU L。最好习惯它,这样的事情经常发生。

© www.soinside.com 2019 - 2024. All rights reserved.