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

Display a FrozenTime object in ISO_8601 while converted to a timezone

我有一个 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 constants are lacking, and those from DateTimeInterface 的便利,(具体来说,\DateTime::ATOM)不起作用。

所以在我继续用 [=19= 重新发明轮子之前,有没有更好的方法在特定的 date format 和特定的时区显示 Cake\I18n\FrozenTime

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

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

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

另见