【日期类】Java 中的时间标准:UTC、GMT、CST

1、UTC(时间标准)简介

UTC(世界标准时间)

UTC:协调世界时,又称 世界标准时间或世界协调时间,简称 UTC,是最主要的世界时间标准。其以原子时秒长为基础,在时刻上尽量接近于格林尼治标准时间

GMT(格林尼治平时)

GMT:格林尼治平时,又称 格林尼治平均时间或格林尼治标准时间,简称 GMT,是指位于英国伦敦郊区的皇家格林尼治天文台的标准时间,因为本初子午线被定义在通过那里的经线。

理论上来说,格林尼治标准时间的正午是指当太阳横穿格林尼治子午线时(也就是在格林尼治上空最高点时)的时间。由于地球在它的椭圆轨道里的运动速度不均匀,这个时刻可能与实际的太阳时有误差,最大误差达16分钟。

由于地球每天的自转是有些不规则的,而且正在缓慢减速,因此格林尼治时间已经不再被作为标准时间使用。现在的标准时间,是由原子钟报时的协调世界时(UTC)。

协调世界时不与任何地区位置相关,也不代表此刻某地的时间,所以在说明某地时间时要加上时区。
即:GMT 并不等于 UTC,而是等于 UTC+0,只是格林尼治刚好在 0 时区上。

CST(北京时间)

CST:北京时间,又称 中国标准时间。在时区划分上,属东八区,比协调世界时早 8 小时,记为:UTC+8

不过这个 CST 缩写比较纠结的是它可以同时代表四个不同的时间:

  1. 中部标准时间(北美洲):Central Standard Time (USA) UT-6:00
  2. 澳州中部时间:Central Standard Time (Australia) UT+9:30
  3. 中国时间:China Standard Time UT+8:00
  4. 古巴标准时间:Cuba Standard Time UT-4:00

2、java.util.Date 与 UTC

java.util.Date 使用 UTC 时间标准

public class DateTestTwo {

    public static void main(String[] args) {
        Date date = new Date();
		
		// Tue Jul 20 19:03:36 CST 2021
        System.out.println(date.toString());
        // 2021-7-20 19:03:36
        System.out.println(date.toLocaleString());
        // 20 Jul 2021 11:03:36 GMT
        System.out.println(date.toGMTString());
    }
}

date.toString():标准的 UTC 时间(CST 就代表了偏移量 +0800);
date.toLocaleString():本地时间,根据本地时区显示的时间格式;
date.toGMTString():GTM 时间,也就是格林威治这个时候的时间

java.util.Date 转换为 UTC 标准时间:

public class DateTestTwo {

    public static void main(String[] args) {
        SimpleDateFormat dateFormatUtc = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss'Z'", Locale.US);
        dateFormatUtc.setTimeZone(TimeZone.getTimeZone("UTC"));
        String utcTime = dateFormatUtc.format(new Date());
        // 2021-07-20T11:27:31Z
        System.out.println(utcTime);
    }
}

UTC 时间格式:2021-07-20T11:27:31Z
GMT 时间格式:20 Jul 2021 11:03:36 GMT
中国的标准时间:Tue Jul 20 19:03:36 CST 2021

3、时间戳与 UTC

你可能感兴趣的:(Java,java,开发语言)