首页 > 解决方案 > 如何计算两周选择者之间的周数

问题描述

我创建了两个星期选择器(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。

标签: javascripthtmlcalculationweek-number

解决方案


使用date-fnsdifferenceInCalendarWeeks

const result = differenceInCalendarWeeks(
  startDate,
  endDate
)

推荐阅读