目录
Get the Quarter from a Date using JavaScript
使用 JavaScript 从日期中获取季度
从日期获取季度:
- 使用该
getMonth()
方法获取给定日期月份的从零开始的值。 - 将月份数除以
3
。 - 添加
1
到结果中。 - 将最终值传递给
Math.floor()
函数。
索引.js
/** * January 1st - March 31st = First Quarter * April 1st - June 30th = Second Quarter * July 1st - September 30th = Third Quarter * October 1st - December 31st = Fourth Quarter */ function getQuarter(date = new Date()) { return Math.floor(date.getMonth() / 3 + 1); } console.log(getQuarter()); // 👉️ current quarter ✅ console.log(getQuarter(new Date('2023-01-24'))); // 👉️ 1 console.log(getQuarter(new Date('2023-02-24'))); // 👉️ 1 console.log(getQuarter(new Date('2023-03-24'))); // 👉️ 1 console.log(getQuarter(new Date('2023-04-24'))); // 👉️ 2 console.log(getQuarter(new Date('2023-05-24'))); // 👉️ 2 console.log(getQuarter(new Date('2023-06-24'))); // 👉️ 2 console.log(getQuarter(new Date('2023-07-24'))); // 👉️ 3 console.log(getQuarter(new Date('2023-08-24'))); // 👉️ 3 console.log(getQuarter(new Date('2023-09-24'))); // 👉️ 3 console.log(getQuarter(new Date('2023-10-24'))); // 👉️ 4 console.log(getQuarter(new Date('2023-11-24'))); // 👉️ 4 console.log(getQuarter(new Date('2023-12-24'))); // 👉️ 4
我们创建了一个可重用的函数,可以从日期中获取季度。
如果未向函数提供日期,则返回当前日期的季度。
我们使用
getMonth
方法获取日期月份的从零开始的值。
0
该方法返回一个介于和之间的整数11
,其中0
对应于一月、1
二月等。由于该方法的工作原理,我们将数字除以3
并且必须添加1
到结果中
。getMonth
最后,我们将值传递给
Math.floor
函数,该函数返回小于或等于给定数字的最大整数。换句话说,如果它有小数,它将向下舍入一个数字。
构造
Date()
函数返回一个Date
对象。您应该将Date
对象作为参数传递给函数,或者什么都不传递。 getQuarter
请注意,我们为参数提供了默认值date
。如果没有将日期传递给该getQuarter
函数,它会返回一个代表当前季度的数字。
如果您所在国家/地区的季度开始/结束日期不同,则可以使用相同的方法。
获取一个季度剩余的天数#
要获得一个季度剩余的天数:
- 获取下一季度的开始日期。
- 查找提供的日期与下一季度日期之间的天数差异。
索引.js
function getQuarter(date = new Date()) { return Math.floor(date.getMonth() / 3 + 1); } function daysLeftInQuarter(date = new Date()) { const quarter = getQuarter(date); const nextQuarter = new Date(); if (quarter === 4) { nextQuarter.setFullYear(date.getFullYear() + 1, 0, 1); } else { nextQuarter.setFullYear(date.getFullYear(), quarter * 3, 1); } const ms1 = date.getTime(); const ms2 = nextQuarter.getTime(); return Math.floor((ms2 - ms1) / (24 * 60 * 60 * 1000)); } console.log(daysLeftInQuarter(new Date())); // 👉️ current date til next quarter console.log(daysLeftInQuarter(new Date('2022-03-01'))); // 👉️ 31 console.log(daysLeftInQuarter(new Date('2022-03-29'))); // 👉️ 3 console.log(daysLeftInQuarter(new Date('2022-12-30'))); // 👉️ 2 console.log(daysLeftInQuarter(new Date('2022-12-31'))); // 👉️ 1 console.log(daysLeftInQuarter(new Date('2022-03-31'))); // 👉️ 1
我们创建了一个可重复使用的函数来计算一个季度还剩下多少天。
setFullYear
方法设置指定日期的完整年份。
该方法有 3 个参数:
yearValue
– 指定年份的整数,例如2023
monthValue
(optional) – an integer between0
(January) and11
(December)
representing the monthdateValue
(optional) – an integer between1
and31
representing the day
of the month
If the quarter is the last, we know that we have to adjust the year as well.
We calculated the starting date of the next quarter and saved it in the
nextQuarter
variable.
We used the
getTime
method to get the number of milliseconds since the Unix Epoch, for the passed in
date and for the start date of the next quarter.
Finally, we subtracted the milliseconds of the provided date from the milliseconds of the start date of the next quarter and converted the result to days.
同样,Math.floor()
如果结果有小数,我们使用该函数将结果向下舍入。根据您的用例,您可能不需要这样做。