在将我们的应用程序迁移到 PHP 7.2 和新的服务器环境后,我在 CakePHP 3.5 中让时区显示在 Time/FrozenTime 对象的 JSON 结果中遇到了一个奇怪的问题。
在格式化新的 Cake\I18n\Time 时,会出现一个简化的示例,如下所示:
(new Time())->i18nFormat("yyyy-MM-dd'T'HH:mm:ssxxx")
以前,这将返回如下字符串:
2020-01-31T10:57:43-07:00
但是,在我们的新环境中,相同的代码无法返回时区部分,而是返回如下结果:
2020-01-31T10:57:43
在内部,将 i18nFormat 跟踪到 ,它们似乎都在调用完全相同的参数来datefmt_create:Cake\I18n\DateFormatTrait::_formatObject
static::$_formatters[$key] = datefmt_create(
'America/Denver',
0,
0,
'America/Denver',
1,
'yyyy-MM-dd\'T\'HH:mm:ssxxx');
但这似乎返回了不同的结果,“xxx”部分没有效果。
是否有某些环境设置会影响此情况?还是由其他原因引起的?
如何取回时区部分?
茅侃侃