1.某一年的天数
思路这样:一年十二个月是固定的,1,3,5,7,8,10,12,月是31天4,6,9,11是30天,主要就是2月的天数,闰年29天,平年28天,平年润年计算方式如下:
下面我们直接来写代码吧:
const allDays = (year: number) => {
let leapYear = false, sum_day = 0, month_arr = [4, 6, 9, 11];
if (year % 100 === 0) { // 年份是整百
leapYear = year % 400 === 0
} else {
leapYear = year % 4 === 0
}
// 下面计算每个月的天数
for (let i = 1; i < 13; i++) {
if (i === 2) {
sum_day += leapYear ? 29 : 28
} else if (month_arr.includes(i)) {
sum_day += 30
} else {
sum_day += 31
}
}
return sum_day
}
这样就计算出了某一年了天数了
2.本年剩余天数
思路:计算出今天的毫秒数,再算出本年最后一天的毫秒数,相减就是剩下时间的毫秒数,然后除以,一天的毫秒数,就是剩下的天数,代码实现如下:
leftDays = () => {
// 今天的标准时间
let today = new Date();
// 本年最后标准时间
let endYear = new Date(today.getFullYear(), 11, 31, 23, 59, 59);
// 一天的毫秒数
let msPerDay = 24 * 60 * 60 * 1000;
// 计算剩余毫秒除以一天的毫秒数,就是天数
return Math.round((endYear.getTime() - today.getTime()) / msPerDay);
}
计算逻辑注释都有解释,也很好理解。