Date对象

Date 对象用于表示精确日期,日期保存形式为自协调世界时(Universal Time Coordinated,UTC)1970 年 1 月 1 日 0:00 至今所经过的毫秒数。

创建日期

调用 Date() 构造函数实例化新的 Date 对象,该构造函数主要有以下 4 种调用形式。

  • new Date():以计算机的当前时间创建 Date 对象。

    示例代码如下。

    let now = new Date();
    //以下代码输出"Wed Nov 23 2022 13:01:59 GMT+0800 (中国标准时间)"
    console.log(now);
  • new Date(年,月,日?,小时?,分钟?,秒?,毫秒?):以指定时间创建 Date 对象。其中,年和月是必选参数,其他是可选参数;月的取值范围为 0~11,其中,0 代表1 月,11 代表 12 月。

    示例代码如下。

    let date1 = new Date(2022, 10, 23, 13, 1, 59);
    //以下代码输出Wed Nov 23 2022 13:01:59 GMT+0800 (中国标准时间)
    console.log(date1);
  • new Date(毫秒):以 UTC 1970/1/1 0:00 为 0ms,创建指定毫秒数的 Date 对象。

    示例代码如下。其中,1970/1/1 加 100 000 000 000 毫秒大约为 1973/3/3,1970/1/1 减 100 000 000 000 毫秒对应的时间大约为 1966/10/31。

    let date1 = new Date(100000000000);
    //以下代码输出Sat Mar 03 1973 17:46:40 GMT+0800 (中国标准时间)
    console.log(date1);
    let date2 = new Date(-100000000000);
    //以下代码输出Mon Oct 31 1966 22:13:20 GMT+0800 (中国标准时间)
    console.log(date2);
  • new Date(日期字符串):通过日期字符串创建 Date 对象。

    示例代码如下。

    let date1 = new Date("Wed Nov 23 2022 13:01:59 GMT+0800 (中国标准时间)");
    //输出Wed Nov 23 2022 13:01:59 GMT+0800 (中国标准时间)
    console.log(date1);

格式化日期

Date 对象支持不同的输入格式和输出格式。

输入格式主要用于 new Date(日期字符串)构造函数。Date 对象支持的输入格式如表16-1所示。

image 2024 02 19 18 40 42 728
Figure 1. 表16-1 Date对象支持的输入格式

输出格式主要用于将 Date 对象转换为字符串,这需要调用 Date 对象的方法,如表16-2所示。

image 2024 02 19 18 41 24 456
Figure 2. 表16-2 Date对象的方法

获取或设置日期

对于已经实例化之后的 Date 对象,你还可以通过各种方法获取局部值或对局部值进行调整。获取 Date 对象局部值的方法如表 16-3 所示。

image 2024 02 19 18 42 47 166
Figure 3. 表16-3 获取Date对象局部值的方法

设置 Date 对象局部值的方法如表16-4所示。

表16-4 设置 Date 对象局部值的方法

image 2024 02 19 18 43 48 941

除以上获取或设置 Date 对象局部值的方法外,ECMAScript 中还有和以上功能类似但是以 setUTCXXX 和 getUTCXXX 开头的方法,如 getUTCMonth() 和 setUTCMonth() 方法,这些方法和上述方法的唯一区别在于是否按 UTC 日期来获取或设置这些局部值。