utc-6时间转换北京时间

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了utc-6时间转换北京时间相关的知识,希望对你有一定的参考价值。

参考技术A 二者相差8小时。
UTC即世界标准时间,中国大陆、中国香港、中国澳门、中国台湾、蒙古国、新加坡、马来西亚、菲律宾、西澳大利亚州的时间与UTC的时差均为+8,也就是UTC+8。
所以计算北京时间只要在原有的时间基础上加8小时就好。

UTC0时间和太平洋时间转换

1. 关系:

  • UTC0时间长这样:2022-02-04T02:33:15.000Z
  • UTC0时间 = 太平洋时间(PST) + 8h
  • 题外: 北京时间 = UTC0 时间 + 8 h = 太平洋时间 + 8h + 8h = PST + 16h

2. 转换:

 2.1. Mysql中转换:

 【场景】:数据库中存储了UTC0时间,接口要求返回太平洋时间
 【栗子】:status_time存储为UTC0时间 : 2022-02-09T22:31:59.000Z
 【转换】:DATE_FORMAT(date_sub(orl.status_time, interval 8 hour), ‘%Y-%m-%d %T’) status_time,
 【结果】:2022-02-09 14:31:59

 2.2. Java代码中转换:

 【结果】:2022-02-09 14:31:59

    public static void main(String[] args) 
        LocalDateTime time = zeroString2DesTimeZone("2022-02-09T22:31:59.001Z", "America/Los_Angeles");
        System.out.println(time.format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")));

    

    public static LocalDateTime zeroString2DesTimeZone(String time, String desTimezone) 
        if (time == null) 
            return null;
        
        LocalDateTime localDateTime = parse(time, "yyyy-MM-dd'T'HH:mm:ss.SSS'Z'");
        return localDateTime.atZone(ZoneOffset.UTC).withZoneSameInstant(ZoneId.of(desTimezone)).toLocalDateTime();
    

    public static LocalDateTime parse(String time, String pattern) 
        if (StringUtils.isAnyBlank(time, pattern)) 
            return null;
        

        LocalDateTime localDateTime;
        try 
            localDateTime = LocalDateTime.parse(time, DateTimeFormatter.ofPattern(pattern));
         catch (Exception ex) 
            LocalDate localDate = parseLocalDate(time, pattern);
            localDateTime = Objects.isNull(localDate) ? null : localDate.atStartOfDay();
        
        return localDateTime;
    

    private static LocalDate parseLocalDate(String str, String pattern) 
        if (StringUtils.isAnyBlank(str, pattern)) 
            return null;
        

        LocalDate localDate = null;
        try 
            localDate = LocalDate.parse(str, DateTimeFormatter.ofPattern(pattern));
         catch (Exception ex) 
        
        return localDate;
    

以上是关于utc-6时间转换北京时间的主要内容,如果未能解决你的问题,请参考以下文章

utc时间转换北京时间(UTC时间与北京时间的换算)

Java之格林威治时间格式转换成北京时间格式

如何把北京时间转换为utc时间呢?

excel怎么样批量将unix时间戳转化为北京时间

excel怎么样批量将unix时间戳转化为北京时间

C语言应用——Unix时间戳和北京时间的相互转换