2016-12-01 3 views
0
function firstDayOfMonth(given_month) { 
      var d = new Date(); 
      d.setMonth(given_month, 1); 
      return d.toISOString(); 
     } 

     function lastDayOfMonth(given_month) { 
      var d = new Date(); 
      d.setMonth(given_month + 1, 0); 
      return d.toISOString(); 
     } 

     var temp = { 
      firstDayOfMonth: firstDayOfMonth(given_month), 
      lastDayOfMonth: lastDayOfMonth(given_month) 
     } 

     console.log(JSON.stringify(temp)) 

Versuch, den ersten Tag des Monats und den letzten Tag des Monats zu erhalten, um einen monatlichen Bericht zu erstellen. Ich habe {"firstDayOfMonth":"2016-11-01T09:45:30.998Z","lastDayOfMonth":"2016-11-30T09:45:30.998Z"} für Temp, ist das normal? warum ist es 9:45 etwas?Monatsbereich mit neuem Datum abrufen()

+0

Das aktuell sein wird Zeit. Sie müssen Stunden auf 0 setzen, Minuten auf 0, genauso wie Sie es für Monat eingestellt haben. – Jagadeesh

Antwort

0

Sie tun das Richtige. Sie müssen nur Stunde für Start- und End-Tag setzen:

firstDayOfMonth.setHours(0,0,0,0); 
lastDayOfMonth.setHours(23,59,59,999); 
0

Gerade Datum normalisieren Objekt mit H/M/S bis 00.00.00, wie folgt festgelegt:

const givenMonth = 6; 

const normalizeTime = d => { 
    d.setHours(12); 
    d.setMinutes(0); 
    d.setSeconds(0); 
    return d; 
}; 

const getISODate = (month, day) => { 
    const d = new Date(); 
    d.setMonth(month, day); 
    return normalizeTime(d).toISOString(); 
}; 

const temp = { 
    firstDayOfMonth: getISODate(givenMonth, 1), 
    lastDayOfMonth: getISODate(givenMonth + 1, 0) 
}; 

temp; 
+0

Verwendet nicht * die Mitte des Tages * etwas gefährlich, wenn sie den "Monat" für Bereichsüberprüfungswerte verwenden? –

+0

ja, könnte es sein. – user3560988

Verwandte Themen