编程:从入门到放弃
    前言
    语言和环境
    +=
    C和C++
    Hex
    Map
    Scope(1):"这"是啥
    Scope(2)
    Singleton
    什么顺序
    从A到Z
    函数
    切分字符串
    初始化(1)
    初始化(2)
    单引号,还是双引号
    参数传递
    左,还是右
    引用
    时间(1)
    时间(2)
    时间(3)
    时间(4)
    时间(5)
    比大小
    流氓甘地
    相等,还是不等(1)
    相等,还是不等(2)
    相等,还是不等(3)
    相等,还是不等(4)
    第一个说了算,还是最后一个
    语言和环境
    除以0
    随机数

时间(1)

Updated: 2022-08-06

入门。

机器内部通常把时间日期转换成一个整数,叫做 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