解析 UTC 日期,输出本地日期时间
Parse a UTC date, output local datetime
我已经阅读了How to get local time in php?和类似的问题,但在这里我想做相反的事情:
对于给定的 UTC 日期时间(例如 2021-03-31 23:45:00
),如何输出本地时区的日期?
$dt = new DateTime("2021-03-31 23:45:00"); // parse the UTC datetime
echo $dt->format('m/d/Y, H:i:s');
在Europe/Paris时区,它应该输出2021-04-01 01:45:00
,但这里仍然输出2021-03-31 23:45:00
。如何解决这个问题?
我也试过 strtotime
也有类似的结果;我也试过:
date_default_timezone_set('UTC');
$dt = new DateTime("2021-03-31 23:46:14");
date_default_timezone_set('Europe/Paris');
echo $dt->format('m/d/Y, H:i:s');
没有成功。
您需要更改日期的时区(使用DateTime::setTimeZone()
),而不是默认时区:
date_default_timezone_set('UTC');
$dt = new DateTime("2021-03-31 23:46:14");
$dt->setTimeZone(new DateTimeZone("Europe/paris")); // change date timezone
echo $dt->format('m/d/Y, H:i:s');
输出:
04/01/2021, 01:46:14
更改默认时区会影响 new DateTime()
,而不是 format()
结果。
这也可以通过 date 和 strtotime 轻松解决:
//The following line is only required if the server has a different time zone.
//date_default_timezone_set('Europe/Paris');
$utcDate = "2021-03-31 23:45:00";
echo date('m/d/Y, H:i:s',strtotime($utcDate.' UTC'));
输出:
04/01/2021, 01:45:00
我已经阅读了How to get local time in php?和类似的问题,但在这里我想做相反的事情:
对于给定的 UTC 日期时间(例如 2021-03-31 23:45:00
),如何输出本地时区的日期?
$dt = new DateTime("2021-03-31 23:45:00"); // parse the UTC datetime
echo $dt->format('m/d/Y, H:i:s');
在Europe/Paris时区,它应该输出2021-04-01 01:45:00
,但这里仍然输出2021-03-31 23:45:00
。如何解决这个问题?
我也试过 strtotime
也有类似的结果;我也试过:
date_default_timezone_set('UTC');
$dt = new DateTime("2021-03-31 23:46:14");
date_default_timezone_set('Europe/Paris');
echo $dt->format('m/d/Y, H:i:s');
没有成功。
您需要更改日期的时区(使用DateTime::setTimeZone()
),而不是默认时区:
date_default_timezone_set('UTC');
$dt = new DateTime("2021-03-31 23:46:14");
$dt->setTimeZone(new DateTimeZone("Europe/paris")); // change date timezone
echo $dt->format('m/d/Y, H:i:s');
输出:
04/01/2021, 01:46:14
更改默认时区会影响 new DateTime()
,而不是 format()
结果。
这也可以通过 date 和 strtotime 轻松解决:
//The following line is only required if the server has a different time zone.
//date_default_timezone_set('Europe/Paris');
$utcDate = "2021-03-31 23:45:00";
echo date('m/d/Y, H:i:s',strtotime($utcDate.' UTC'));
输出:
04/01/2021, 01:45:00