2012-01-10 89 views
5

Trong java-script tôi muốn nhận tuần đầu tiên của ngày và tuần cuối cùng của ngày theo số tuần và năm ....cách lấy ngày đầu tiên và ngày cuối cùng của số tuần và năm

Để biết Ví dụ nếu tôi cung cấp cho các đầu vào như

2(week),2012

nó sẽ trả về các giá trị

2012-01-08 and 2012-01-14

+0

Làm thế nào về nếu tôi cung cấp 2 trong năm 2013 là gì? Nó nên trở lại cái gì? –

+0

nó sẽ trở lại tuần thứ hai của ngày đầu tiên và ngày cuối cùng .... – balaphp

+0

@balaphp thực sự nó sẽ trở lại ngày đầu tiên và cuối cùng của tuần thứ 2 của năm 2013..m tôi đúng. ? – Chandresh

Trả lời

7

Hãy thử điều 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) 

n1 chứa ngày đầu tiên của tuần
n2 chứa ngày cuối cùng của tuần

Đối với các hằng số:
604.800.000 là một tuần trong mili giây
518400000 là sáu ngày

+3

Không chính xác, n1 không nhất thiết là thứ hai và n2 không nhất thiết là chủ nhật . –

3

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ả là không chính xác. Bạn nên trừ đi số của ngày đầu tiên.

thay đổi Mã

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); 

nếu bạn muốn là người đầu tiên là chủ nhật, thay đổi (firstDay-1) để

-1
dt = new Date(); 
    var firstDateOfWeek=(dt.setDate(dt.getDate()-dt.getDay())); 
    var lastDateOfWeek=(dt.setDate(dt.getDate()+6-dt.getDay())); 
Các vấn đề liên quan