碳 - 日期采用 ISO8601 格式,带有偏移量表示法

问题描述

我需要使用 PHP Carbon 将用户给定的日期时间格式为 Y-m-d H:i:s 转换为 ISO8601 格式和偏移表示法。所需的时区是欧洲/柏林。

到目前为止我尝试过的是

     $from = '2021-05-01 00:00:00';
     $dateF = Carbon::createFromDate($from)->tz('Europe/Berlin')->format('Y-m-d\Th:i:sP');

我得到的结果几乎是我想要的

     2021-05-01T02:00:00+02:00

我真正需要的是准确的 h:i:s

     2021-05-01T00:00:00+02:00

有什么想法吗?

解决方法

请注意,您需要 H 而不是 h 0-23 小时。 而且您只需要使用 parse 并在其中包含日期的时区,即可让 Carbon 了解必须读取日期时间的时区:

$from = '2021-05-01 00:00:00';
echo Carbon::parse("$from Europe/Berlin")->format('Y-m-d\TH:i:sP');
如果您关心 createFromDate 变量中的小时/分钟/秒,

$from 不是很好,因为它只返回与当前时间一起传递的日期。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...