Choice, is to save time.

Unix time

协调世界时(UTC)是世界上调节时钟和工夫的次要工夫规范,它与0度经线的平太阳时相差不超过1秒,并不恪守夏令时。

Unix time,或称POSIX工夫是UNIX或类UNIX零碎应用的工夫示意形式:从UTC1970年1月1日0时0分0秒起至当初的总秒数,不思考闰秒,有些零碎应用32位整数存储,会有2038年问题。

Unix time 就是 UTC+0 工夫的工夫戳

Y2038

2038年问题是指在应用POSIX工夫的32位计算机应用程序上,格林尼治工夫2038年1月19日凌晨03:14:07(北京工夫:2038年1月19日中午11:14:07)之后无奈失常工作

Java

public static void main(String[] args) {    System.out.println("Y2038: " + Instant.ofEpochSecond(2147483647L));    System.out.println("Java max date: " + Instant.ofEpochMilli(Long.MAX_VALUE));    System.out.println("Java max date: " + new Date(Long.MAX_VALUE));}
Y2038 问题:2038-01-19T03:14:07ZJava 最大工夫:+292278994-08-17T07:12:55.807ZJava 最大工夫:Sun Aug 17 15:12:55 CST 292278994 ##时区问题造成不同

Java 没有 Y2038 问题,即便是应用 Date 也没有

JavaScript

let maxDateNowValue = 8640000000000000;console.log("js max date: " + new Date(maxDateNowValue).toISOString());// Max value plus 1 millisecondlet plusOneMS = maxDateNowValue + 1;console.log(new Date(plusOneMS).toString()); // Invalid Date
js max date: +275760-09-13T00:00:00.000ZInvalid Date

JavaScript 也没有 Y2038 问题,但能示意的最大工夫比 Java 小

JavaScript 最大工夫根据 https://stackoverflow.com/que...

工夫格局

public static void main(String[] args) {    Instant now = Instant.now();    System.out.println("Z             : "+now.atZone(ZoneId.of("Z")));    System.out.println("UTC+0         : "+now.atZone(ZoneId.of("UTC+0")));    System.out.println("UTC+8         : "+now.atZone(ZoneId.of("UTC+8")));    System.out.println("GMT           : "+now.atZone(ZoneId.of("GMT")));    System.out.println("GMT+8         : "+now.atZone(ZoneId.of("GMT+8")));    System.out.println("Asia/Shanghai : "+now.atZone(ZoneId.of("Asia/Shanghai")));}
Z             : 2022-06-18T08:35:46.326ZUTC+0         : 2022-06-18T08:35:46.326Z[UTC]UTC+8         : 2022-06-18T16:35:46.326+08:00[UTC+08:00]GMT           : 2022-06-18T08:35:46.326Z[GMT]GMT+8         : 2022-06-18T16:35:46.326+08:00[GMT+08:00]Asia/Shanghai : 2022-06-18T16:35:46.326+08:00[Asia/Shanghai]

下面是同一个工夫的不同格局,T 用于分隔日期和事件,Z+08:00 都是示意基于规范工夫的偏移量,Z = UTC+0 \ +08:00 = UTC+08:00[UTC+08:00] 示意采纳的规范和偏移量

协调世界时(UTC)是最靠近格林威治规范工夫(GMT)的几个代替工夫零碎之一。对于大多数用处来说,UTC工夫被认为能与GMT工夫调换,但GMT工夫已不再被科学界所确定

理论应用中 GMT 也能够配合偏移量应用,能够了解为和 UTC 是雷同的

UTC 相当于是按经度划分的时区,Asia/Shanghai 是按行政区域划分的时区

时区问题

时区问题的实质是,不同的服务运行在不同时区的服务器上,在互相传输工夫数据时,没有正确的解决时区,可能是在发送数据时,也可能是在接收数据时,或者两种状况都有。

如下的数据,不同时区的服务都会认为是当地时区的工夫,无从通晓原始数据的时区:

{    "message": "hello world",    "createTime": "2022-06-01 12:00:00"}

在工夫表达式中退出时区信息能够防止这样的误会

{    "message": "hello world",    "createTime": "2022-06-01T12:00:00Z"}
更多时区问题请移步: Web开发中的时区问题