cakephp FrozenDate::parseDate()不反映作为参数传递的日期

sauutmhj  于 2022-11-11  发布在  PHP
关注(0)|答案(1)|浏览(107)

我给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

}
f3temu5u

f3temu5u1#

检查API文档,第二个参数接受:
array|string|int|null $format Any format accepted by IntlDateFormatter.
docblock也有一些例子:

$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()**(ICU日期/时间格式语法)接受的语法相同,其中您要查找的模式将是:

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')

相关问题