在转换为时区时显示 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')
另见
我有一个 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')
另见