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

月の最初の日と月の最後の日を取得して月次レポートを作成しようとしています。私は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

ただ、このように、12時00分○○秒に設定H/M/sの日付オブジェクトを正規化:

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

関連する問題