我想转换从回调中得到的值/日期/时间我得到的原始值就像这个
$value='2021-01-20T19:03:52.355+0300';
我需要把它转换成这样的
$value='20-01-2021 23.03.52,355000 +07:00';
我做了一些substr和concat但不幸的是,它以字符串结束,我的数据库数据类型格式是时间戳,我无法将值插入数据库
阅读DateTime::createFromFormat
我可以转换时间格式,但仍然没有转换到另一个时区的线索
您可以使用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
你可以这样做
$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');