0

アプリケーションを 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 から までトレースするとCake\I18n\DateFormatTrait::_formatObject、どちらもまったく同じパラメーターを datefmt_create に呼び出しているようです。

static::$_formatters[$key] = datefmt_create(
    'America/Denver',
    0,
    0,
    'America/Denver',
    1,
    'yyyy-MM-dd\'T\'HH:mm:ssxxx');

しかし、これは異なる結果を返すようです。「xxx」の部分は効果がありません。

これに影響を与える環境設定はありますか?それとも他の何かが原因ですか?

タイムゾーン部分を元に戻すにはどうすればよいですか?

4

1 に答える 1