Carbon Timezone 和格式不能一起工作

Carbon Timezone and format not working together

这是我的代码

$time = '2019-12-16T10:14:35.000000Z';

$var = new Carbon($time);

$var = $var->setTimezone('Asia/Dhaka')->format('Y-m-d H:i:s');

我期待的return是'2019-12-16 4:14:35'

return 我得到'2019-12-16 10:14:35'

如果我删除格式功能,我将得到正确的时区 '2019-12-16T4:14:35.000000Z'

很明显,setTimeZone 不适用于 Format。我在这里错过了什么?

我知道可能存在重复问题,但 none 的解决方案似乎对我有用。

如果您的源时间戳总是在 UTC 时区。 所以将您的代码更改为:

$var = Carbon::createFromFormat('Y-m-d H:i:s', $timestamp, 'UTC');
$var = $var->setTimezone('Asia/Dhaka');

你可以这样设置时区

$time = '2019-12-16T10:14:35.000000Z'; 
$var = Carbon::createFromFormat('Y-m-d H:i:s', $time, 'Asia/Dhaka');

试试这个:

$var = Carbon::createFromFormat('Y-m-d H:i:s', $timestamp, 'Europe/Madrid');
$var = $var->setTimezone('Asia/Dhaka');