在转换为时区时在ISO_8601中显示FrozenTime对象

问题描述

我有一个Cake\I18n\FrozenTime对象,我需要同时显示2020-09-11T04:15:44+00:00并将它们转换为特定时区。

通常,我会打电话给->format('c'),但这会根据我的应用程序配置使用UTC。

我知道我可以使用->i18nFormat('yyyy-MM-dd HH:mm','Europe/copenhagen')转换为时区,但随后我将失去c date format shorthand的便利性。缺少IntlDateFormatter predefined constantsthose from DateTimeInterface(特别是\DateTime::ATOM)不起作用。

因此,在我继续使用->i18nFormat("yyyy-MM-dd'T'HH:mm:ssxxx",'Europe/copenhagen')重新发明轮子之前,是否有更好的方法在特定的date format和特定的时区显示Cake\I18n\FrozenTime

解决方法

如果要保留日期对象,只需在对象上应用时区转换即可。

Frozen*对象是不可变的,因此在应用转换时您将得到一个新对象:

echo $obj->setTimezone('Europe/Copenhagen')->format('c')

另请参见