碰到一个场景,得到一串输入时间格式,但是需要转换成我本地的时间,输入的时间格式是 UTC 时间格式:yyyy-MM-ddTHH:mm:ss.SSSZ
yyyy
表示年份四位MM
表示月份两位表示,01 ~ 12dd
表示多少号,01 ~ 31T
表示日期个时间的分隔符HH
表示小时 01 ~ 24mm
表示分钟 01 ~ 60ss
表示秒 01 ~ 60SSS
表示完整毫秒数,为三位小数。Z
是表示时区,
如下面这几种时间格式:
2018-01-01T00:00:00.000Z
默认使用 0 时区
2018-01-01T00:00:00.000+0800
东八区
- 转换需求,我本地在东八区,给的输入时间是:
2018-01-01T12:00:00.000+0100
,因为给定的时间+0100
时区,而我在的是+0800
时区,所以最后转换成我本地的时间就变成2018-01-01 19:00:00.000
,比输入多七个小时。 - 代码实现, 需要使用 Carbon 扩展包
<?php
use Carbon\Carbon;
$input = 2018-01-01T12:00:00.000+0100;
// 实例化一个 Carbon 对象
$carbon = Carbon::make($input);
// 转换时区
$carbon->setTimezone('PRC');
// 输出查看
echo $carbon->toDateTimeString();