尝试让CakePHP
3.4使用locale parser正确解析我的日期。
我按照描述进行了设置,并且一直在错误地解析我的日期。我已将明显的问题部分定位为php-intl
扩展程序中的datefmt_create函数。
如果您有兴趣,CakePHP
中的相关行是here。
$formatter = datefmt_create(
'en_US',
IntlDateFormatter::NONE,
IntlDateFormatter::NONE,
'UTC',
IntlDateFormatter::GREGORIAN,
'dd/MM/YYYY HH:mm'
);
$time = $formatter->parse('02/02/2011 12:34');
echo date('r', $time);
为什么上面的代码会返回Sun, 19 Dec 2010 12:34:00 +0000
?
我希望看到Wed, 02 Feb 2011 12:34:00 +0000
。
免责声明:我知道日期解析的其他方法,我完全感兴趣的是这个方法的行为不像我期望的那样。
答案 0 :(得分:0)
首先:由于您使用的是PHP函数datefmt_create
,因此这根本不是CakePHP问题。
第二:你混淆了程序风格(datefmt_create
)和面向对象的风格($formatter->parse
) - 你应该决定你想要走哪条路。
您遇到的问题:
您在datefmt_create
函数中使用了错误的语法。检查语法here。
此代码将按预期执行:
date_default_timezone_set('UTC');
$formatter = datefmt_create(
'en_US',
IntlDateFormatter::NONE,
IntlDateFormatter::NONE,
'UTC',
IntlDateFormatter::GREGORIAN,
'dd/MM/yyyy HH:mm'
);
// I used `datefmt_parse` instead since it’s also the procedural way to go
$time = datefmt_parse($formatter, '02/02/2011 12:34');
echo date('r', $time);
<强>输出:强>
Wed, 02 Feb 2011 12:34:00 +0000