用时区转换时间 PHP

Converting Time with timezone PHP

我想转换从回调中得到的 value/date/time 我得到的原始值是这样的

$value='2021-01-20T19:03:52.355+0300';

我需要转换成这样

$value='20-01-2021 23.03.52,355000 +07:00';

我做了一些 substr 和 concat 但不幸的是它以字符串结尾,我的 db 数据类型格式是时间戳,我无法将值插入 db

阅读一些关于 DateTime::createFromFormat 的内容 我可以转换时间格式,但仍然不知道转换为另一个时区

你可以这样做

$datetime = new \DateTime('2021-01-20T19:03:52.355+0300');
$datetime->setTimezone(new \DateTimeZone('+0700'));        
date_format($datetime, 'd-m-Y H.i.s,u P');

您可以使用 setTimezone() 更改时区:

$value    = '2021-01-20T19:03:52.355+0300';
$expected = '20-01-2021 23.03.52,355000 +07:00';

$datetime = new \DateTime($value);        
$datetime->setTimezone(new \DateTimeZone('+0700'));

var_dump($datetime->format('d-m-Y H.i.s,u P') == $expected); // bool(true)

你可以试试这个代码,这对你有用,你可以根据需要设置时区。

// Input  : '2021-01-20T19:03:52.355+0300';
// Output : '20-01-2021 23.03.52,355000 +07:00';

date_default_timezone_set('Europe/London');
$datetime = new DateTime('2021-01-20T19:03:52.355+0300');

// timezone to convert.
$la_time = new DateTimeZone('Asia/Krasnoyarsk');
$datetime->setTimezone($la_time);
echo $datetime->format('d-m-Y H.i.s,u P');

输出:

20-01-2021 23.03.52,355000 +07:00