[英]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
更改以前的答案并说清楚。 @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.