繁体   English   中英

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

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

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

例如,如果我的输入是:

2(week),2012

那么我的 output 应该是:

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); console.log(n2);

如果您希望第一个是星期日,请将(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());

解决这个问题的有效方法是使用 moment.js

let date=new Date();
let start_date = moment(date).startOf('date').toDate()
let end_date = moment(date).endOf('date').toDate()
   dt = new Date();
   var firstDateOfWeek=(dt.setDate(dt.getDate()-dt.getDay()));
   var lastDateOfWeek=(dt.setDate(dt.getDate()+6-dt.getDay()));

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM