Trong JavaScript, tôi muốn có được ngày đầu tiên trong tuần và ngày cuối cùng của tuần theo số tuần và năm.
Ví dụ: nếu tôi đầu vào của tôi là:
2(week),2012
Sau đó, đầu ra của tôi phải là:
2012-01-08 and 2012-01-14
M.A.K. Ripon
1.9203 huy hiệu vàng29 Huy hiệu bạc46 Huy hiệu đồng3 gold badges29 silver badges46 bronze badges
Hỏi ngày 10 tháng 1 năm 2012 lúc 12:18Jan 10, 2012 at 12:18
3
Thử cái này:
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 chứa ngày đầu tiên trong tuần N2 chứa ngày cuối cùng trong tuần
n2 contains the last day of the week
Đối với các hằng số: 604800000 là một tuần tính bằng mili giây 518400000 là sáu ngày
604800000 is one week in milliseconds
518400000 is six days
M.A.K. Ripon
1.9203 huy hiệu vàng29 Huy hiệu bạc46 Huy hiệu đồng3 gold badges29 silver badges46 bronze badges
Hỏi ngày 10 tháng 1 năm 2012 lúc 12:18Jan 10, 2012 at 12:30
Thử cái này:bardiir
N1 chứa ngày đầu tiên trong tuần N2 chứa ngày cuối cùng trong tuần9 gold badges40 silver badges64 bronze badges
2
Đối với các hằng số: 604800000 là một tuần tính bằng mili giây 518400000 là sáu ngày
Đã trả lời ngày 10 tháng 1 năm 2012 lúc 12:30
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());
Bardiirbardiir
14.3k9 Huy hiệu vàng40 Huy hiệu bạc64 Huy hiệu đồng
Một chút thay đổi đối với câu trả lời của @bardiir, nếu ngày đầu tiên của năm không phải là Chủ nhật (hoặc thứ hai), kết quả đó không chính xác. Bạn nên trừ đi số ngày đầu tiên.30 gold badges168 silver badges206 bronze badges
Đã thay đổi mãJan 20, 2015 at 15:52
Xig480Xig480Xig480
Nếu bạn muốn lần đầu tiên là Chủ nhật, hãy thay đổi (firstDay-1) thành firstDay1 silver badge2 bronze badges
1
Robg
// 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());
Huy hiệu vàng 138K30Dec 3, 2021 at 2:21
Đã trả lời ngày 20 tháng 1 năm 2015 lúc 15:52Jian Zhong
691 Huy hiệu bạc2 Huy hiệu đồng3 silver badges8 bronze badges
Thay đổi câu trả lời trước đó và làm cho nó rõ ràng. @bardiir
let date=new Date(); let start_date = moment(date).startOf('date').toDate() let end_date = moment(date).endOf('date').toDate()Đã trả lời ngày 3 tháng 12 năm 2021 lúc 2:21Aug 8 at 13:24
1
dt = new Date(); var firstDateOfWeek=(dt.setDate(dt.getDate()-dt.getDay())); var lastDateOfWeek=(dt.setDate(dt.getDate()+6-dt.getDay()));
Jian Zhongjian ZhongFeb 8, 2016 at 7:35