如何使用new Date( )

244 阅读2分钟

通过这个方法,可以获取当前时间。

创建一个日期对象

const d = new Date()
console.log(d);
// Thu Mar 02 2023 20:31:03 GMT+0800 (中国标准时间)

这种格式太难看了,如果只想要查看年月日,这时可以使用toLocaleDateString方法格式化

const d = new Date()
console.log(d.toLocaleDateString());
// 2023/3/2

或者使用toISOString方法进行格式化

const d = new Date()
console.log(d.toISOString().slice(0,10));
// 2023-03-02

另外,年,月,日,周几等可以单独获取。值得注意的是:getMonth方法后加1的值才是当前月份;getDay方法的返回值是0~6,0表示星期天,6表示星期六。

const d = new Date()
console.log(d.getFullYear());
// 2023
console.log(d.getMonth()+1);
// 3
console.log(d.getDate());
// 2
console.log(d.getDay());
// 4

对于获取时间戳(时间戳的单位为毫秒),有以下两种方法:

const d = new Date()
console.log(d.getTime());
// 1677761156143
console.log(d.valueOf());
// 1677761156143

如果有需要,可以使用setTime修改当前时间。

例如:我要获取明天这个时候的时间,可以这样做

const d = new Date()
// 当前的时间戳+1天的时间戳=明天这个时候的时间戳
d.setTime(d.getTime() + 1000 * 60 * 60 * 24);
console.log(d);
// Fri Mar 03 2023 20:51:14 GMT+0800 (中国标准时间)

最后,我们来看一个常见的需求:求未来七天(包括今天)的月和日,格式为:3/2。

第一次遇到这个问题时,感觉处理有点麻烦,因为这七天可能月份会不同,而每个月的天数又可能不同。后来发现将时间转换为时间戳处理是真简单!

const arr = []
for (let i = 0; i < 7; i++) {
  const now = new Date()
  // 随着i增加,修改对应的时间。i=0时,now表示今天;i=1时,now表示明天...
  now.setTime(now.getTime() + 1000 * 60 * 60 * 24 * i)
  const data = now.toLocaleDateString().slice(5);
  arr.push(data)
}
console.log(arr);
// ['3/2', '3/3', '3/4', '3/5', '3/6', '3/7', '3/8']