时间(1)

Updated: 2019-01-01

入门

机器内部通常把时间日期转换成一个整数,叫做 Unix Time,表示从 1970 年一月一号开始经过了多少秒。

在 Terminal 中可以查看当前的 Unix Time

$ date +%s
1519769705

坑!

当用 Javascript 来转换日期时,你却看到了这样分裂的结果:

> Date.parse('2020-01-01');
1577836800000
> Date.parse('2020/01/01');
1577865600000

进阶

在 bash 里把得到的 Unix Time 再转换回去看看,注意 Javascript 给我们的是毫秒,所以要去掉最后三个 0

$ date -d @1577836800
Tue Dec 31 16:00:00 PST 2019

$ date -d @1577865600
Wed Jan  1 00:00:00 PST 2020

所以第一个是 PST 的 2019 年 12 月 31 号下午四点,也就是 UTC 的 2020 年 1 月 1 号零点;而第二个是 PST 的零点。2020-01-01返回的是 UTC 的时间,而2020/01/01返回的是本地时间。

这谁记得住呢。

如果要强制 UTC 时间,就要在字符串中加上Z

> Date.parse('2020-01-01Z');
1577836800000
> Date.parse('2020/01/01Z');
1577836800000