2016-12-01 7 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?get month range with new Date()

+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