2016-12-01 129 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

相关问题