2012-01-10 18 views
5

en Java-script quiero conseguir primera semana de la fecha y la última semana de la fecha por número de la semana y el año ....cómo conseguir el primer día y el último día de la semana y el año número

Para ejemplo, si me dan la entrada como

2(week),2012

debe devolver los valores

2012-01-08 and 2012-01-14

+0

¿Qué tal si le doy 2 para el año 2013? ¿Qué debería devolver? –

+0

debe devolver la segunda semana de la primera fecha y la última fecha ... – balaphp

+0

@balaphp en realidad devolverá la primera y la última fecha de la segunda semana del año 2013 ... estoy en lo correcto. ? – Chandresh

Respuesta

7

Prueba esto:

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 contiene el primer día de la semana
n2 contiene el último día de la semana

En cuanto a las constantes:
604800000 es de una semana en milisegundos
518400000 es seis días

+3

Incorrecto, n1 no necesariamente es el lunes y n2 no es necesariamente el domingo . –

3

Un pequeño cambio en la respuesta de @bardiir, si el primer día del año no es domingo (o lunes) ese resultado no es correcto. Debe menos el número del primer día.

código cambiado

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

si desea que el primero es Domingo, cambie la (FirstDay-1) a

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