FrozenDate::parseDate() 不反映作为参数传递的日期
FrozenDate::parseDate() doesn't reflect the date passed as parameter
我为 FrozenDate::parseDate()
指定什么格式似乎并不重要,我总是得到相同的错误日期。
代码:
$d1 = '8/28/2021';
$d2 = '10/27/2021';
debug($d1);
debug($d2);
debug(FrozenDate::parseDate($d1, 'm/d/Y'));
debug(FrozenDate::parseDate($d2, 'm/d/Y'));
exit;
输出:
\src\Controller\AdministratorsController.php (line 559)
'8/28/2021'
\src\Controller\AdministratorsController.php (line 560)
'10/27/2021'
\src\Controller\AdministratorsController.php (line 561)
object(Cake\I18n\FrozenDate) {
'time' => '2020-12-20 00:00:00.000000+00:00',
'timezone' => 'UTC',
'fixedNowTime' => false
}
\src\Controller\AdministratorsController.php (line 562)
object(Cake\I18n\FrozenDate) {
'time' => '2020-12-20 00:00:00.000000+00:00',
'timezone' => 'UTC',
'fixedNowTime' => false
}
查看 API 文档,第二个参数接受:
array|string|int|null $format Any format accepted by IntlDateFormatter.
文档块也有一些示例:
$time = Time::parseDate('10/13/2013');
$time = Time::parseDate('13 Oct, 2013', 'dd MMM, y');
$time = Time::parseDate('13 Oct, 2013', IntlDateFormatter::SHORT);
所以这不是已知的语法,例如 PHP 的 date()
函数,它与 i18nFormat()
, the ICU Date/Time Format Syntax 接受的语法相同,您正在寻找的模式因为将是:
M/d/y
值得注意的是,解析相当宽松,并且还依赖于语言环境。例如,虽然 M
只会格式化为没有前导零的月份,但在解析时它将接受月份作为带和不带前导零的数字,以及短月份和长月份名称(在当前语言中),这意味着所有这些实际上都可以工作(当 en
设置为语言时):
FrozenDate::parseDate('8/6/2021', 'M/d/y')
FrozenDate::parseDate('08/06/2021', 'M/d/y')
FrozenDate::parseDate('Aug/6/2021', 'M/d/y')
FrozenDate::parseDate('August/06/21', 'M/d/y')
我为 FrozenDate::parseDate()
指定什么格式似乎并不重要,我总是得到相同的错误日期。
代码:
$d1 = '8/28/2021';
$d2 = '10/27/2021';
debug($d1);
debug($d2);
debug(FrozenDate::parseDate($d1, 'm/d/Y'));
debug(FrozenDate::parseDate($d2, 'm/d/Y'));
exit;
输出:
\src\Controller\AdministratorsController.php (line 559)
'8/28/2021'
\src\Controller\AdministratorsController.php (line 560)
'10/27/2021'
\src\Controller\AdministratorsController.php (line 561)
object(Cake\I18n\FrozenDate) {
'time' => '2020-12-20 00:00:00.000000+00:00',
'timezone' => 'UTC',
'fixedNowTime' => false
}
\src\Controller\AdministratorsController.php (line 562)
object(Cake\I18n\FrozenDate) {
'time' => '2020-12-20 00:00:00.000000+00:00',
'timezone' => 'UTC',
'fixedNowTime' => false
}
查看 API 文档,第二个参数接受:
array|string|int|null $format Any format accepted by IntlDateFormatter.
文档块也有一些示例:
$time = Time::parseDate('10/13/2013'); $time = Time::parseDate('13 Oct, 2013', 'dd MMM, y'); $time = Time::parseDate('13 Oct, 2013', IntlDateFormatter::SHORT);
所以这不是已知的语法,例如 PHP 的 date()
函数,它与 i18nFormat()
, the ICU Date/Time Format Syntax 接受的语法相同,您正在寻找的模式因为将是:
M/d/y
值得注意的是,解析相当宽松,并且还依赖于语言环境。例如,虽然 M
只会格式化为没有前导零的月份,但在解析时它将接受月份作为带和不带前导零的数字,以及短月份和长月份名称(在当前语言中),这意味着所有这些实际上都可以工作(当 en
设置为语言时):
FrozenDate::parseDate('8/6/2021', 'M/d/y')
FrozenDate::parseDate('08/06/2021', 'M/d/y')
FrozenDate::parseDate('Aug/6/2021', 'M/d/y')
FrozenDate::parseDate('August/06/21', 'M/d/y')