在很多场景下,我们有需求查询某一段时间内的数据,例如:今天的数据、昨天的数据、这一周的数据、这一个月的数据等,这个时候我们就要初始化特定的时间对象了。
时间取整
按天、小时、分钟、毫秒取整可以直接用原始提供的方法,如下所示:
const now = new Date(); now.setHours(0, 0, 0, 0); // 按天取整 now.setMinutes(0, 0, 0); // 按小时取整 now.setSeconds(0, 0); // 按分钟取整 now.setMilliseconds(0); // 按秒取整
当天开始时间
获取今天或者某一天的开始时间可以用 Date.setHours()
方法来实现,例如获取今天的开始时间:
const today = new Date(new Date().setHours(0, 0, 0, 0)); console.log(today)
输出:2021-09-09T16:00:00.000Z
如果要是昨天、前天这种和今天有关系的,我们也可以用 Date.setHours()
方法,只是第一个参数要用负数,例如:
const yesterday = new Date(new Date().setHours(-24, 0, 0, 0)); const theDayBeforeYesterday = new Date(new Date().setHours(-48, 0, 0, 0)); console.log(yesterday, theDayBeforeYesterday)
输出:2021-09-08T16:00:00.000Z 2021-09-07T16:00:00.000Z
提示
也可以用 Date.setDate()
方式来实现昨天、前天的需求。
某月开始时间
const start = new Date(); start.setDate(1); start.setHours(0, 0, 0, 0); console.log(start);
输出:2021-08-31T16:00:00.000Z
一周的开始时间
在JavaScript中,可以用过Date.getDay()方法来获取当前是周几,由于国外是周日为一周的第一天,所以周日-周六分别对于0-6。
const now = new Date(); const sunday = new Date(now.getTime() - now.getDay() * 24 * 60 * 60 * 1000); sunday.setHours(0, 0, 0, 0); console.log(sunday);
输出:2021-09-04T16:00:00.000Z
一年的开始时间
const year = new Date(); year.setMonth(0,1); year.setHours(0,0,0,0) console.log(year)
输出:2020-12-31T16:00:00.000Z