如何从周号和年份中获取一周的第一个日期和最后一个日期

How to get first date and last date of the week from week number and year?

本文关键字:日期 一周 第一个 最后一个 获取 周号      更新时间:2023-09-26

在JavaScript中,我只想按周数和年份获取周的第一个日期和最后一个日期。

例如,如果我的输入是:

2(week),2012

那么我的输出应该是:

2012-01-08 and 2012-01-14

试试这个:

var year = 2012;
var week = 2;
var d = new Date("Jan 01, " + year + " 01:00:00");
var w = d.getTime() + 604800000 * (week - 1);
var n1 = new Date(w);
var n2 = new Date(w + 518400000)
console.log(n1);
console.log(n2);

n1包含一周的第一天
n2包含一周中的最后一天

关于常量:
604800000是以毫秒为单位的一周
518400000是六天

对@bardiir的答案做了一点更改,如果一年中的第一天不是星期日(或星期一),则结果是不正确的。你应该减去第一天的数字。

更改代码

firstDay = new Date(2015, 0, 1).getDay();
console.log(firstDay);
var year = 2015;
var week = 67;
var d = new Date("Jan 01, " + year + " 01:00:00");
var w = d.getTime() - (3600000 * 24 * (firstDay - 1)) + 604800000 * (week - 1)
var n1 = new Date(w);
var n2 = new Date(w + 518400000)
console.log(n1.toString());
console.log(n2.toString());

如果您希望第一个是星期天,请将(firstDay-1)更改为firstDay

您可以查看并尝试以下链接。

如何在JavaScript 中获取一周中的第一天和最后一天

这可能对你有帮助。

谢谢。

更改以前的答案并使其清楚@bardiir

// give the year and week
let year = 2021;
let week = 1;
// first date of year
let firstDateOfYear = new Date(year, 0, 1);
// get the day of first date in the year
let firstDayOfYear = firstDateOfYear.getDay();
console.log("first day of year", firstDayOfYear);
let timeofOneDay = 60 * 60 * 24 * 1000;
let timeofOneWeek = 60 * 60 * 24 * 7 * 1000;
// last day of the week, 6 days later
let timeof6Day = 60 * 60 * 24 * 6 * 1000;
// if week start from Monday
let timeOfFirstDay = firstDateOfYear.getTime() - (timeofOneDay * (firstDayOfYear - 1)) + timeofOneWeek * (week - 1);
let timeOfLastDay = timeOfFirstDay + timeof6Day;
console.log("week start from Monday");
console.log(new Date(timeOfFirstDay).toString());
console.log(new Date(timeOfLastDay).toString());
// if week from Sunday
timeOfFirstDay = firstDateOfYear.getTime() - (timeofOneDay * (firstDayOfYear - 0)) + timeofOneWeek * (week - 1);
timeOfLastDay = timeOfFirstDay + timeof6Day;
console.log("week start from Sunday");
console.log(new Date(timeOfFirstDay).toString());
console.log(new Date(timeOfLastDay).toString());

   dt = new Date();
   var firstDateOfWeek=(dt.setDate(dt.getDate()-dt.getDay()));
   var lastDateOfWeek=(dt.setDate(dt.getDate()+6-dt.getDay()));

解决这个问题的强大方法是使用moment.js

let date=new Date();
let start_date = moment(date).startOf('date').toDate()
let end_date = moment(date).endOf('date').toDate()