Featured image of post UTC 格式的时间转换成本地的时间

UTC 格式的时间转换成本地的时间

转换成我本地的时间,输入的时间格式是 UTC 时间格式

碰到一个场景,得到一串输入时间格式,但是需要转换成我本地的时间,输入的时间格式是 UTC 时间格式:yyyy-MM-ddTHH:mm:ss.SSSZ

  • yyyy 表示年份四位
  • MM 表示月份两位表示,01 ~ 12
  • dd 表示多少号,01 ~ 31
  • T 表示日期个时间的分隔符
  • HH 表示小时 01 ~ 24
  • mm 表示分钟 01 ~ 60
  • ss 表示秒 01 ~ 60
  • SSS 表示完整毫秒数,为三位小数。
  • 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();