2016-12-01 156 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)) 

試圖獲取月份的第一天和本月的最後一天來制定月度報告。我得到了溫度{"firstDayOfMonth":"2016-11-01T09:45:30.998Z","lastDayOfMonth":"2016-11-30T09:45:30.998Z"} ,這是正常的嗎?爲什麼它是9:45的東西?使用新日期獲取月份範圍日期()

+0

這將是當前時間。您需要將小時數設置爲0,分鐘數設置爲0,方法與月份設置相同 – Jagadeesh

回答

0

你正在做正確的事情。你只需要在起點和終點日成立小時:

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

剛剛正常化日期的對象與H/M/S設置爲12:00:00,像這樣:

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

如果使用「月」作爲範圍檢查值,是不是正在使用*當天中午*有點危險? –

+0

是的,它可能是。 – user3560988

相關問題