计算单双周

计算单双周

起因

个人在辅助小孩写作业过程中,偶尔会有需求知道今天是单周还是双周。好决定带什么内容的课本。

这个功能对于我来说,并非刚需,也是偶发的。而且感觉也不会太难,于是就起了自己做一个“在线小工具”的念头。

操作简单,直接选择下“开始日期”和“计算日期”,点下按钮就可以了。

大家可以体验下(在线小工具:JSON 转换 Excel;单双周计算; - Development Environment)

硬货

以下是主要代码

calc方法获取和“计算日期”和“开始日期”,进行了计算,并将结果输出到页面。

function calc() {

let weeks = weeksBetweenDatesByYearWeek(vm.week.endDate, vm.week.startDate);

vm.error = "相差周数为:" + weeks;

}

weeksBetweenDatesByYearWeek方法,接受两个日期,计算周数差异。

function weeksBetweenDatesByYearWeek(date1, date2) {

const week1 = getWeekOfYear(date1);

const week2 = getWeekOfYear(date2);

// 返回周数差异(注意处理跨年情况,这里假设date2在date1之后)

return Math.abs(week2 - week1);

}

getWeekOfYear方法用于获取某个日期在本年度的周数。

function getWeekOfYear(date) {

// 创建一个与给定日期相同但时间为当天的00:00:00的副本

const startOfDate = new Date(date.getFullYear(), date.getMonth(), date.getDate());

// 获取当年1月1日是星期几(0代表星期日,6代表星期六)

const startOfYearDay = new Date(date.getFullYear(), 0, 1).getDay();

// 计算从当年1月1日到给定日期的天数偏移量

let dayOfYear = Math.floor((startOfDate - new Date(date.getFullYear(), 0, 1)) / (1000 * 60 * 60 * 24));

// 根据ISO 8601,如果1月1日不是星期一,则需要调整偏移量

if (startOfYearDay <= 4) {

dayOfYear += startOfYearDay;

} else {

dayOfYear += startOfYearDay - 7;

}

// 返回周数(ISO周数是从1开始的)

return Math.ceil(dayOfYear / 7);

}

相关文章

如何关闭Win10自动锁屏 Win10关闭自动锁屏方法【详解】
有哪些形容雾的成语
bt365登录

有哪些形容雾的成语

📅 07-08 👁️ 2900
杭州保姆纵火案二审
365会被黑吗

杭州保姆纵火案二审

📅 06-27 👁️ 170