2017-08-23 1 views
0

Ich habe dieses kleine Stück Code gebaut (mit der Hilfe von vielen SO-Threads), es funktionierte gut in den letzten 2 Jahren, aber im Jahr 2018 interpretiert es die erste Woche falsch.JS Datum außerhalb der Woche

function getDateOutWeek(week, year, lastDay) { 
 
    var d = new Date(year, 0, 1 + (week) * 7); 
 
    var day = d.getDay(); 
 
    var firstDay = d.getDate() - day + (day === 0 ? -6 : 1); // adjust when day is sunday 
 

 
    if (!lastDay) { 
 
     alert(new Date(d.setDate(firstDay)).toDateString()); 
 
    } else { 
 
     alert(new Date(d.setDate(firstDay + 6)).toDateString()); 
 
    } 
 

 
} 
 

 
getDateOutWeek("1", "2018");

Es 2018.01.08 kehrt aber sollte 2018.01.01 zurück. Das tritt schon in der ersten Zeile dort auf calculate 1 + (week) * 7 = 8. Ich kann nicht herausfinden, wie man hier den richtigen Wert bekommt.

+1

Was ist mit dem Ausgang falsch? Jan 08, 2018, ist ein Montag, wie die Ausgabe sagt. Was erwartest du zu sehen? –

+0

Es sollte 1. Januar 2018 sein. Ursache Jan 08,2018 ist die zweite Woche – Doomenik

+0

warum '1 + (Woche)'? – Nemani

Antwort

2

Warum haben Sie 1 zu Ihrer Woche hinzugefügt? der folgende Code funktioniert gut

function getDateOutWeek(week, year, lastDay) { 
 
    var d = new Date(year, 0, week* 7); 
 
    var day = d.getDay(); 
 
    var firstDay = d.getDate() - day + (day === 0 ? -6 : 1); // adjust when day is sunday 
 

 
    if (!lastDay) { 
 
     alert(new Date(d.setDate(firstDay)).toDateString()); 
 
    } else { 
 
     alert(new Date(d.setDate(firstDay + 6)).toDateString()); 
 
    } 
 

 
} 
 

 
getDateOutWeek("1", "2018")

+0

Warte ich hatte sicher einen Grund für die + 1. Es kann nicht so einfach sein: D Ernsthaft im Moment wird dies den Trick machen, ich kann einfach nicht glauben, dass ich ein +1 aus einem Grund eingefügt habe. – Doomenik

+0

Der Code oben funktioniert immer noch für 2013 (Rückkehr Montag, 7. Januar), also wahrscheinlich kein guter Grund;) Vielleicht, weil Sie bereits die +1 in 'Tag === 0 enthalten? -6: 1' – Stephan

+0

vielleicht hätten Sie erwogen, die erste Woche als 0. Woche anzurufen, ich bin mir nicht sicher – Nemani

Verwandte Themen