我试图找到一种获取日期的两个最接近范围的方法,可能是十年,世纪,千年
示例
var date = new Date() // Mon Jul 09 2018 17:12:17 GMT-0400
date.getDecadeRange() // [Jan 01 2010 , Dec 31 , 2019]
以此类推。
答案 0 :(得分:2)
要舍入到最接近的倍数,我们可以使用小工具:
const round = (n, to) => n - n % to;
现在我们只需要四舍五入,并把第一天作为一天:
const round = (n, to) => n - n % to;
const now = new Date();
const start = new Date(round(now.getFullYear(), 100), 0, 1);
// Go to the start of the next period ...
const end = new Date(round(now.getFullYear(), 100) + 100, 0, 1);
end.setDate(end.getDate() - 1); // then go one day back
console.log(`${start}\n${end}`);
答案 1 :(得分:0)
感谢所有回答的人。 读了乔纳斯的答案,我有一个瞬间,它就出现了答案
const dateRanges = (date, rule, sum = 0)
=> Math.floor(date.getFullYear() / rule) * rule + sum
我可以用这种方式执行
const lowerDecade = dateRanges(new Date() , 10 /** => decade**/)
const upperDecade = dateRanges(new Date() , 10 /** => decade**/, 9)