console.log(`Three weeks from today is ${today}`);
4.3.3
讨论
setDate()
方法的参数不限于只能使用正整数,还可以使用负数后退日期。其他
setXxx()
形式的方法可以修改日期的其他部分,例如
setMonth()
方法向前或向后
移动月份、
setHours()
方法移动小时等。与
setDate()
方法一样,这些方法均可顺
延,因此增加
48
小时将把日期向前移动两整天。
Date
对象是可变的,这种行为显然已经过时。在更现代的
JavaScript
库中,
setDate()
这种方法应该返回一个新
Date
对象。而真实情况是,直接修改当前
Date
对象。即使通过
const
声明日期也是如此(
const
禁止把变量指向其他
Date
对象,但是不能阻止你修改当前引用的
Date
对象)。为了避免潜在的问题,可以在
操作之前把日期克隆一份。为此,可以使用
Date.getTime()
方法获取底层表示日
期的毫秒数,使用它新创建一个对象。
const
originalDate =
new
Date();
//
克隆日期
const
futureDate =
new
Date(originalDate.getTime());
//
修改克隆得到的日期
futureDate.setDate(originalDate.getDate()+21);
console.log(`Three weeks from ${originalDate} ...
Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month, and much more.
O’Reilly covers everything we've got, with content to help us build a world-class technology community, upgrade the capabilities and competencies of our teams, and improve overall team performance as well as their engagement.
Julian F.
Head of Cybersecurity
I wanted to learn C and C++, but it didn't click for me until I picked up an O'Reilly book. When I went on the O’Reilly platform, I was astonished to find all the books there, plus live events and sandboxes so you could play around with the technology.
Addison B.
Field Engineer
I’ve been on the O’Reilly platform for more than eight years. I use a couple of learning platforms, but I'm on O'Reilly more than anybody else. When you're there, you start learning. I'm never disappointed.
Amir M.
Data Platform Tech Lead
I'm always learning. So when I got on to O'Reilly, I was like a kid in a candy store. There are playlists. There are answers. There's on-demand training. It's worth its weight in gold, in terms of what it allows me to do.