通过这个方法,可以获取当前时间。
创建一个日期对象
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']