软考
APP下载

date对象

Date对象是JavaScript中表示时间和日期的对象之一,它可以存储从1970年1月1日00:00:00(标准时间,也称为Epoch时间)到现在的毫秒数,并提供了很多方法来获取和操作日期和时间。在本文中,我们将从多个角度分析Date对象。

1. 创建Date对象

可以用以下几种方式来创建一个Date对象:

1)不带参数,这会创建一个包含当前时间的Date对象:

```

const now = new Date();

console.log(now); // 例如:2021-04-22T07:56:25.284Z

```

2)传入一个时间戳,可以是一个整数或一个字符串表示的整数,这会返回对应的Date对象:

```

const timestamp = 1619098584567;

const fromTimestamp = new Date(timestamp);

console.log(fromTimestamp); // 例如:2021-04-22T07:49:44.567Z

```

3)传入一个字符串,这个字符串可以是以下格式:

- ISO格式:`2021-04-22T07:56:25.284Z`

- 简化ISO格式:`2021-04-22T07:56:25Z`

- 带时区的ISO格式:`2021-04-22T07:56:25.284+08:00`

- RFC2822格式:`Thu, 22 Apr 2021 07:56:25 GMT`

- 带时区的RFC2822格式:`Thu, 22 Apr 2021 07:56:25 +0800`

- 其他自定义格式

```

const fromString = new Date('2021-04-22T07:56:25.284Z');

console.log(fromString); // 例如:2021-04-22T07:56:25.284Z

```

2. 获取Date对象的时间部分

Date对象提供了多个方法来获取其表示的时间的不同部分,例如:

- `getFullYear()`:获取年份(4位整数)

- `getMonth()`:获取月份(0~11,0表示一月)

- `getDate()`:获取日期(1~31)

- `getDay()`:获取星期几(0~6,0表示星期日)

- `getHours()`:获取小时数(0~23)

- `getMinutes()`:获取分钟数(0~59)

- `getSeconds()`:获取秒数(0~59)

- `getMilliseconds()`:获取毫秒数(0~999)

以上方法返回的都是本地时间,也就是根据浏览器所在时区计算的结果。如果要获取UTC时间,可以用相应的方法名前加上`UTC`前缀,例如`getUTCHours()`。

```

const now = new Date();

console.log(now.getFullYear()); // 2021

console.log(now.getMonth()); // 3(4月)

console.log(now.getDate()); // 22

console.log(now.getDay()); // 4(星期四)

console.log(now.getHours()); // 7

console.log(now.getMinutes()); // 56

console.log(now.getSeconds()); // 25

console.log(now.getMilliseconds()); // 284

```

3. 操作Date对象的时间部分

Date对象还提供了多个方法来操作其表示的时间的不同部分,例如:

- `setFullYear(year[, month[, date]])`:设置年份,可以同时设置月份和日期

- `setMonth(month[, date])`:设置月份,可以同时设置日期

- `setDate(date)`:设置日期

- `setHours(hour[, min[, sec[, ms]]])`:设置小时数,可以同时设置分钟数、秒数和毫秒数

- `setMinutes(min[, sec[, ms]])`:设置分钟数,可以同时设置秒数和毫秒数

- `setSeconds(sec[, ms])`:设置秒数,可以同时设置毫秒数

- `setMilliseconds(ms)`:设置毫秒数

以上方法都会改变原有对象,并返回改变后的毫秒数。同样,如果要操作UTC时间,可以用相应的方法名前加上`UTC`前缀。

```

const now = new Date();

now.setFullYear(2022);

console.log(now); // 例如:2022-04-22T07:56:25.284Z

```

4. 计算时间差

Date对象也可以用来计算两个时间之间的差距,这可以用以下两种方式实现:

- 通过减法运算得到毫秒数的差距,然后将差距转换为需要的单位。例如,计算两个时间之间相差的天数:

```

const start = new Date('2021-04-01');

const end = new Date('2021-04-22');

const diff = end.getTime() - start.getTime();

const days = diff / (1000 * 60 * 60 * 24);

console.log(days); // 21

```

- 通过Date对象提供的方法直接计算。例如,获取两个时间之间相差的秒数:

```

const start = new Date('2021-04-01T00:00:00.000Z');

const end = new Date('2021-04-22T07:56:25.284Z');

const diffSeconds = (end - start) / 1000;

console.log(diffSeconds); // 1811975.284

```

5. 其他操作

除了上述操作外,Date对象还有一些其他常用的方法,例如:

- `getTimezoneOffset()`:获取当前时区相对于UTC的分钟数差距(正表示比UTC晚,负表示比UTC早)

- `toJSON()`:返回一个带有ISO格式的日期字符串,可以直接用于JSON序列化

- `toString()`:返回一个表示日期和时间的字符串,一般格式为`ddd mmm dd yyyy HH:MM:SS GMT(±zzzz)`,其中`ddd`是星期几的缩写,`mmm`是月份的缩写,`zzzz`是与UTC的时差

```

const now = new Date();

console.log(now.getTimezoneOffset()); // -480(相当于UTC+8)

console.log(now.toJSON()); // "2021-04-22T07:56:25.284Z"

console.log(now.toString()); // "Thu Apr 22 2021 15:56:25 GMT+0800 (China Standard Time)"

```

综上所述,Date对象在JavaScript中具有重要的作用,并提供了多种常用的方法来获取和操作日期和时间。

备考资料 免费领取:信息系统管理工程师报考指南+考情分析+思维导图等 立即下载
真题演练 精准解析历年真题,助你高效备考! 立即做题
相关阅读
信息系统管理工程师题库