本文介紹一下如何使用js獲取指定時間對應月份的天數。
獲取當前月份天數
我測試的時間是2022-09-01:
const date = new Date()
const year = date.getFullYear()
const month = date.getMonth()
const days = new Date(year,month+1,0).getDate() // 30
假如要獲取2022-02的天數:
const days = new Date(2022,2,0).getDate() // 28
注意:new Date()接收的第三個參數是0,第二個參數是人類意識中的月份(因為date.getMonth()得到的值比想象中的小1)
補充
月份是從0開始計算的:
new Date('2022-01-01 13:55:33').getMonth()
// 0
獲取指定日期 是 星期幾:
new Date('2022-08-28 13:55:33').getDay()
// 0 星期日(老外喜歡把一週中的星期日當成第一天,也是從0開始)
應用場景
我是在使用 echarts 時遇到了這個問題,需要按月份生成數據:
具備了上面的基礎知識,就可以搞定這個問題了:
function genDaysArr(timestamp) {
const d = new Date(timestamp)
const y = d.getFullYear()
const m = d.getMonth()+1
const m_str = m>10?m:'0'+m
// 獲取指定月份天數
const days = new Date(y,m,0).getDate()
const arr = []
for (let i = 1; i <= days; i ++) {
const day_str = i>=10?i:'0'+i
arr.push({day: `${y}-${m_str}-${day_str}`, count: 0})
}
return arr
}
const a = genDaysArr(1647852283000)
console.log(a)
/**
[
{ day: '2022-03-01', count: 0 },
{ day: '2022-03-02', count: 0 },
{ day: '2022-03-03', count: 0 },
{ day: '2022-03-04', count: 0 },
{ day: '2022-03-05', count: 0 },
{ day: '2022-03-06', count: 0 },
{ day: '2022-03-07', count: 0 },
{ day: '2022-03-08', count: 0 },
{ day: '2022-03-09', count: 0 },
{ day: '2022-03-10', count: 0 },
{ day: '2022-03-11', count: 0 },
{ day: '2022-03-12', count: 0 },
{ day: '2022-03-13', count: 0 },
{ day: '2022-03-14', count: 0 },
{ day: '2022-03-15', count: 0 },
{ day: '2022-03-16', count: 0 },
{ day: '2022-03-17', count: 0 },
{ day: '2022-03-18', count: 0 },
{ day: '2022-03-19', count: 0 },
{ day: '2022-03-20', count: 0 },
{ day: '2022-03-21', count: 0 },
{ day: '2022-03-22', count: 0 },
{ day: '2022-03-23', count: 0 },
{ day: '2022-03-24', count: 0 },
{ day: '2022-03-25', count: 0 },
{ day: '2022-03-26', count: 0 },
{ day: '2022-03-27', count: 0 },
{ day: '2022-03-28', count: 0 },
{ day: '2022-03-29', count: 0 },
{ day: '2022-03-30', count: 0 },
{ day: '2022-03-31', count: 0 }
]
*/
只要傳入對應月份的時間戳就可以生成這個月的基礎數據了。
希望對你有幫助。