javascript - 如何计算两周选择者之间的周数
问题描述
我创建了两个星期选择器(html 输入类型 =“星期”)。我想知道所选的两周之间有多少周。这些是我的两个 html 周选择器:
<input type="week" id="weekPicker1" required="required" min="1971-W01" max="2071-W52" value="2021-W01">
<input type="week" id="weekPicker2" required="required" min="1971-W01" max="2071-W52" value="2021-W52">
它以字符串形式返回2021-W01
和。2021-W52
在这种情况下,日期之间有 52 周。但是我怎样才能让 Javascript 也知道这一点呢?
我有这个 Javascript 代码来确保我得到年份和周数:
// Get dates in usable format.
let startDate = inputFields[0].value.split("-");
let startYear = Number(startDate[0]); //2021
let startWeek = Number(startDate[1].replace("W", "")); //1
let endDate = inputFields[1].value.split("-");
let endYear = Number(endDate[0]); //2021
let endWeek = Number(endDate[1].replace("W", "")); //52
但是现在,我该如何计算呢?
我想到了这个:
var yearDiff = endYear - startYear;
var amountOfWeeks = endWeek - startWeek;
amountOfWeeks += yearDiff * 52;
我认为它几乎可以工作,除了不是每年都有 52 周(闰年)。那么我应该如何有效地做到这一点呢?
编辑:
我想在纯 JS 中看到它。没有图书馆或类似的东西。我想要基于这样的日历的周数。因此,基于 7 天一周的计算不会给出我想要的。
最后我需要用几周来做计算。所以使用日期选择器来选择星期似乎仍然是错误的。我还测试了是否可以根据天数等进行计算,但它会给出错误的结果。我必须做的计算:(选定的周长):(一年中的最大周数)* 200。
解决方案
使用date-fns
和differenceInCalendarWeeks
。
const result = differenceInCalendarWeeks(
startDate,
endDate
)
推荐阅读
- sql-server - MsSQL 触发器未针对多个插入运行
- javascript - Google Maps API - 从位置获取 n 个最近的标记
- css - WebPack / 复制 Tailwind CSS 的 @apply 指令以远离 SASS 中的 @extend 的方法
- python - 具有已知结果的 pytest 测试函数
- python - 图像的动态内核
- java - 将 CSV 文件读取到对象的 ArrayList 中,没有错误但无法打印出对象信息
- wordpress - 创建新帖子时 wp_redirect 不起作用
- jquery - jQuery Validate 远程方法 - 我如何发送多个变量
- wordpress - 使用 add_query_var 在 WordPress 中构建自定义 URL
- excel - 无法在工作表更改中相交(ByVal Target as Range)工作