分析UTC日期,输出本地日期时间



我已经阅读了如何在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');           

在欧洲/巴黎时区,它应该输出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');

输出:

2021年1月4日01:46:14

更改默认时区会影响new DateTime(),而不是format()结果。

这也可以通过日期和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

相关内容

  • 没有找到相关文章

最新更新