问题描述
我需要使用 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
不是很好,因为它只返回与当前时间一起传递的日期。