创建日期对象

首先,创建一个 Date 对象。

使用当前时间创建

1
new Date();

通过传递年、月、日、小时、分钟和秒值创建

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
console.log(new Date(2022));
// 只传入一个参数: (秒)
// Thu Jan 01 1970 08:00:02 GMT+0800 (中国标准时间)

console.log(new Date(2022, 0));
// 传入两个参数: (年, 月)
// Sat Jan 01 2022 00:00:00 GMT+0800 (中国标准时间)

console.log(new Date(2022, 20));
// 传入两个参数: (年, 月)
// Fri Sep 01 2023 00:00:00 GMT+0800 (中国标准时间)

console.log(new Date(2022, 0, 40));
// 传入三个参数: (年, 月, 日)
// Wed Feb 09 2022 00:00:00 GMT+0800 (中国标准时间)

console.log(new Date(2022, 0, 60));
// 传入三个参数: (年, 月, 日)
// Tue Mar 01 2022 00:00:00 GMT+0800 (中国标准时间)

console.log(new Date(2022, 0, 20, 12));
// 传入四个参数: (年, 月, 日, 时)
// Thu Jan 20 2022 12:00:00 GMT+0800 (中国标准时间)

console.log(new Date(2022, 0, 20, 25));
// 传入四个参数: (年, 月, 日, 时)
// Fri Jan 21 2022 01:00:00 GMT+0800 (中国标准时间)

console.log(new Date(2022, 0, 20, 9, 30));
// 传入四个参数: (年, 月, 日, 时, 分)
// Thu Jan 20 2022 09:30:00 GMT+0800 (中国标准时间)

console.log(new Date(2022, 0, 20, 9, 75));
// 传入四个参数: (年, 月, 日, 时, 分)
// Thu Jan 20 2022 10:15:00 GMT+0800 (中国标准时间)

console.log(new Date(2022, 0, 20, 9, 30, 45));
// 传入五个参数: (年, 月, 日, 时, 分, 秒)
// Thu Jan 20 2022 09:30:45 GMT+0800 (中国标准时间)

console.log(new Date(2022, 0, 20, 9, 30, 85));
// 传入五个参数: (年, 月, 日, 时, 分, 秒)
// Thu Jan 20 2022 09:31:25 GMT+0800 (中国标准时间)

console.log(new Date(2022, 0, 20, 9, 30, -30));
// 传入五个参数: (年, 月, 日, 时, 分, 秒)
// Thu Jan 20 2022 09:29:30 GMT+0800 (中国标准时间)

通过传递字符串创建

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
console.log(new Date('2022-07-07T11:58:38.873Z'));
// Thu Jul 07 2022 19:58:38 GMT+0800 (中国标准时间)

console.log(new Date('2022-07-07'));
// Thu Jul 07 2022 08:00:00 GMT+0800 (中国标准时间)

console.log(new Date('2022-07-07 12:00'));
// Thu Jul 07 2022 12:00:00 GMT+0800 (中国标准时间)

console.log(new Date('2022-07-07 19:58:38'));
// Thu Jul 07 2022 19:58:38 GMT+0800 (中国标准时间)

console.log(new Date('2022/07/07 19:58:00'));
// Thu Jul 07 2022 19:58:00 GMT+0800 (中国标准时间)

console.log(new Date('July 1, 2022 12:15:30'));
// Fri Jul 01 2022 12:15:30 GMT+0800 (中国标准时间)

console.log(new Date('3 16, 2000 12:05:20'));
// Thu Mar 16 2000 12:05:20 GMT+0800 (中国标准时间)

console.log(new Date('03 06, 2000 12:00:00'));
// Mon Mar 06 2000 12:00:00 GMT+0800 (中国标准时间)

转换(时间戳⇄日期对象)

什么是时间戳?

  • 从 ”1970 年 1 月 1 日 0:00:00 (UTC)“ 开始的秒数表示
  • 例如“1970 年 1 月 1 日 0:00:01”,它将类似于 “1”,基于 UTC 的“1970 年 1 月 1 日 0:00:00”,以及从那里的进度。

什么是UTC

  • UTC: 协调世界时,又称世界统一时间、世界标准时间、国际协调时间。由于英文(CUT)和法文(TUC)的缩写不同,作为妥协,简称UTC。

  • 协调世界时是以原子时秒长为基础,在时刻上尽量接近于世界时的一种时间计量系统。中国大陆采用ISO 8601-1988的《数据元和交换格式信息交换日期和时间表示法》(GB/T 7408-1994)称之为国际协调时间,代替原来的GB/T 7408-1994;中国台湾采用CNS 7648的《资料元及交换格式–资讯交换–日期及时间的表示法》,称之为世界统一时间。

UnixTime → 日期对象

从像“1657201700334”这样的数字转换为“2022-07-07”的形式。
UnixTime 以秒为单位,需要转换为毫秒才能转换为 Date 对象timestamp * 1000。

1
2
3
4
5
6
let UnixTimestamp = 1657202104
let date = new Date(UnixTimestamp * 1000);

console.log(date.getFullYear()); //2022
console.log(date.toLocaleDateString().slice(5)); //7/7
console.log(date.toLocaleTimeString().slice(0, -3)); //21:55

日期对象 → UnixTime

从像 2022/07/07 这样的形状转换为像“1657202104”这样的形状。
因为 Date 对象以毫秒为单位,需要转换为秒才能转换为 UnixTime timestamp / 1000。

1
2
3
4
let date = new Date();
let timestamp = Math.floor( date.getTime() / 1000 );

console.log(timestamp); //1657202377

参考