js获取一年有多少周及每周详细日期

获取一年的周数量及详细

function formatNumber(n) {
  return n.toString().length > 1 ? n : '0' + n
}

const getWeek = {
  run: (year) => {
    let days = getWeek.getDate(year || new Date().getFullYear())
    let weeks = {};
    for (let i = 0; i < days.length; i++) {
      let weeksKeyLen = Object.keys(weeks).length;
      let daySplit = days[i].split('_');

      if (weeks[weeksKeyLen] === undefined) {
        weeks[weeksKeyLen + 1] = [daySplit[0]]
      } else {
        if (daySplit[1] == '1') {
          weeks[weeksKeyLen + 1] = [daySplit[0]]
        } else {
          weeks[weeksKeyLen].push(daySplit[0])
        }

      }

    }
    return weeks;

  },
  getDate: (year) => {
    let dates = [];
    for (let i = 1; i <= 12; i++) {
      for (let j = 1; j <= new Date(year, i, 0).getDate(); j++) {
        dates.push(year + '-' + formatNumber(i) + '-' + formatNumber(j) + '_' + new Date([year, i, j].join('-')).getDay())
      }
    }
    return dates;
  }
}
const weeks = getWeek.run('2021');
console.log(weeks);

//console
{
  '1': [ '2021-01-01', '2021-01-02', '2021-01-03' ],
  '2': [
    '2021-01-04',
    '2021-01-05',
    '2021-01-06',
    '2021-01-07',
    '2021-01-08',
    '2021-01-09',
    '2021-01-10'
  ],
  '3': [
    '2021-01-11',
    '2021-01-12',
    '2021-01-13',
    '2021-01-14',
    '2021-01-15',
    '2021-01-16',
    '2021-01-17'
  ],
  '4': [
    '2021-01-18',
    '2021-01-19',
    '2021-01-20',
    '2021-01-21',
    '2021-01-22',
    '2021-01-23',
    '2021-01-24'
  ],
  '5': [
    '2021-01-25',
    '2021-01-26',
    '2021-01-27',
    '2021-01-28',
    '2021-01-29',
    '2021-01-30',
    '2021-01-31'
  ],
  '6': [
    '2021-02-01',
    '2021-02-02',
    '2021-02-03',
    '2021-02-04',
    '2021-02-05',
    '2021-02-06',
    '2021-02-07'
  ],
  '7': [
    '2021-02-08',
    '2021-02-09',
    '2021-02-10',
    '2021-02-11',
    '2021-02-12',
    '2021-02-13',
    '2021-02-14'
  ],
  '8': [
    '2021-02-15',
    '2021-02-16',
    '2021-02-17',
    '2021-02-18',
    '2021-02-19',
    '2021-02-20',
    '2021-02-21'
  ],
  '9': [
    '2021-02-22',
    '2021-02-23',
    '2021-02-24',
    '2021-02-25',
    '2021-02-26',
    '2021-02-27',
    '2021-02-28'
  ],
  '10': [
    '2021-03-01',
    '2021-03-02',
    '2021-03-03',
    '2021-03-04',
    '2021-03-05',
    '2021-03-06',
    '2021-03-07'
  ],
  '11': [
    '2021-03-08',
    '2021-03-09',
    '2021-03-10',
    '2021-03-11',
    '2021-03-12',
    '2021-03-13',
    '2021-03-14'
  ],
  '12': [
    '2021-03-15',
    '2021-03-16',
    '2021-03-17',
    '2021-03-18',
    '2021-03-19',
    '2021-03-20',
    '2021-03-21'
  ],
  '13': [
    '2021-03-22',
    '2021-03-23',
    '2021-03-24',
    '2021-03-25',
    '2021-03-26',
    '2021-03-27',
    '2021-03-28'
  ],
  '14': [
    '2021-03-29',
    '2021-03-30',
    '2021-03-31',
    '2021-04-01',
    '2021-04-02',
    '2021-04-03',
    '2021-04-04'
  ],
  '15': [
    '2021-04-05',
    '2021-04-06',
    '2021-04-07',
    '2021-04-08',
    '2021-04-09',
    '2021-04-10',
    '2021-04-11'
  ],
  '16': [
    '2021-04-12',
    '2021-04-13',
    '2021-04-14',
    '2021-04-15',
    '2021-04-16',
    '2021-04-17',
    '2021-04-18'
  ],
  '17': [
    '2021-04-19',
    '2021-04-20',
    '2021-04-21',
    '2021-04-22',
    '2021-04-23',
    '2021-04-24',
    '2021-04-25'
  ],
  '18': [
    '2021-04-26',
    '2021-04-27',
    '2021-04-28',
    '2021-04-29',
    '2021-04-30',
    '2021-05-01',
    '2021-05-02'
  ],
  '19': [
    '2021-05-03',
    '2021-05-04',
    '2021-05-05',
    '2021-05-06',
    '2021-05-07',
    '2021-05-08',
    '2021-05-09'
  ],
  '20': [
    '2021-05-10',
    '2021-05-11',
    '2021-05-12',
    '2021-05-13',
    '2021-05-14',
    '2021-05-15',
    '2021-05-16'
  ],
  '21': [
    '2021-05-17',
    '2021-05-18',
    '2021-05-19',
    '2021-05-20',
    '2021-05-21',
    '2021-05-22',
    '2021-05-23'
  ],
  '22': [
    '2021-05-24',
    '2021-05-25',
    '2021-05-26',
    '2021-05-27',
    '2021-05-28',
    '2021-05-29',
    '2021-05-30'
  ],
  '23': [
    '2021-05-31',
    '2021-06-01',
    '2021-06-02',
    '2021-06-03',
    '2021-06-04',
    '2021-06-05',
    '2021-06-06'
  ],
  '24': [
    '2021-06-07',
    '2021-06-08',
    '2021-06-09',
    '2021-06-10',
    '2021-06-11',
    '2021-06-12',
    '2021-06-13'
  ],
  '25': [
    '2021-06-14',
    '2021-06-15',
    '2021-06-16',
    '2021-06-17',
    '2021-06-18',
    '2021-06-19',
    '2021-06-20'
  ],
  '26': [
    '2021-06-21',
    '2021-06-22',
    '2021-06-23',
    '2021-06-24',
    '2021-06-25',
    '2021-06-26',
    '2021-06-27'
  ],
  '27': [
    '2021-06-28',
    '2021-06-29',
    '2021-06-30',
    '2021-07-01',
    '2021-07-02',
    '2021-07-03',
    '2021-07-04'
  ],
  '28': [
    '2021-07-05',
    '2021-07-06',
    '2021-07-07',
    '2021-07-08',
    '2021-07-09',
    '2021-07-10',
    '2021-07-11'
  ],
  '29': [
    '2021-07-12',
    '2021-07-13',
    '2021-07-14',
    '2021-07-15',
    '2021-07-16',
    '2021-07-17',
    '2021-07-18'
  ],
  '30': [
    '2021-07-19',
    '2021-07-20',
    '2021-07-21',
    '2021-07-22',
    '2021-07-23',
    '2021-07-24',
    '2021-07-25'
  ],
  '31': [
    '2021-07-26',
    '2021-07-27',
    '2021-07-28',
    '2021-07-29',
    '2021-07-30',
    '2021-07-31',
    '2021-08-01'
  ],
  '32': [
    '2021-08-02',
    '2021-08-03',
    '2021-08-04',
    '2021-08-05',
    '2021-08-06',
    '2021-08-07',
    '2021-08-08'
  ],
  '33': [
    '2021-08-09',
    '2021-08-10',
    '2021-08-11',
    '2021-08-12',
    '2021-08-13',
    '2021-08-14',
    '2021-08-15'
  ],
  '34': [
    '2021-08-16',
    '2021-08-17',
    '2021-08-18',
    '2021-08-19',
    '2021-08-20',
    '2021-08-21',
    '2021-08-22'
  ],
  '35': [
    '2021-08-23',
    '2021-08-24',
    '2021-08-25',
    '2021-08-26',
    '2021-08-27',
    '2021-08-28',
    '2021-08-29'
  ],
  '36': [
    '2021-08-30',
    '2021-08-31',
    '2021-09-01',
    '2021-09-02',
    '2021-09-03',
    '2021-09-04',
    '2021-09-05'
  ],
  '37': [
    '2021-09-06',
    '2021-09-07',
    '2021-09-08',
    '2021-09-09',
    '2021-09-10',
    '2021-09-11',
    '2021-09-12'
  ],
  '38': [
    '2021-09-13',
    '2021-09-14',
    '2021-09-15',
    '2021-09-16',
    '2021-09-17',
    '2021-09-18',
    '2021-09-19'
  ],
  '39': [
    '2021-09-20',
    '2021-09-21',
    '2021-09-22',
    '2021-09-23',
    '2021-09-24',
    '2021-09-25',
    '2021-09-26'
  ],
  '40': [
    '2021-09-27',
    '2021-09-28',
    '2021-09-29',
    '2021-09-30',
    '2021-10-01',
    '2021-10-02',
    '2021-10-03'
  ],
  '41': [
    '2021-10-04',
    '2021-10-05',
    '2021-10-06',
    '2021-10-07',
    '2021-10-08',
    '2021-10-09',
    '2021-10-10'
  ],
  '42': [
    '2021-10-11',
    '2021-10-12',
    '2021-10-13',
    '2021-10-14',
    '2021-10-15',
    '2021-10-16',
    '2021-10-17'
  ],
  '43': [
    '2021-10-18',
    '2021-10-19',
    '2021-10-20',
    '2021-10-21',
    '2021-10-22',
    '2021-10-23',
    '2021-10-24'
  ],
  '44': [
    '2021-10-25',
    '2021-10-26',
    '2021-10-27',
    '2021-10-28',
    '2021-10-29',
    '2021-10-30',
    '2021-10-31'
  ],
  '45': [
    '2021-11-01',
    '2021-11-02',
    '2021-11-03',
    '2021-11-04',
    '2021-11-05',
    '2021-11-06',
    '2021-11-07'
  ],
  '46': [
    '2021-11-08',
    '2021-11-09',
    '2021-11-10',
    '2021-11-11',
    '2021-11-12',
    '2021-11-13',
    '2021-11-14'
  ],
  '47': [
    '2021-11-15',
    '2021-11-16',
    '2021-11-17',
    '2021-11-18',
    '2021-11-19',
    '2021-11-20',
    '2021-11-21'
  ],
  '48': [
    '2021-11-22',
    '2021-11-23',
    '2021-11-24',
    '2021-11-25',
    '2021-11-26',
    '2021-11-27',
    '2021-11-28'
  ],
  '49': [
    '2021-11-29',
    '2021-11-30',
    '2021-12-01',
    '2021-12-02',
    '2021-12-03',
    '2021-12-04',
    '2021-12-05'
  ],
  '50': [
    '2021-12-06',
    '2021-12-07',
    '2021-12-08',
    '2021-12-09',
    '2021-12-10',
    '2021-12-11',
    '2021-12-12'
  ],
  '51': [
    '2021-12-13',
    '2021-12-14',
    '2021-12-15',
    '2021-12-16',
    '2021-12-17',
    '2021-12-18',
    '2021-12-19'
  ],
  '52': [
    '2021-12-20',
    '2021-12-21',
    '2021-12-22',
    '2021-12-23',
    '2021-12-24',
    '2021-12-25',
    '2021-12-26'
  ],
  '53': [
    '2021-12-27',
    '2021-12-28',
    '2021-12-29',
    '2021-12-30',
    '2021-12-31'
  ]
}
  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是获取一年的农历日期JavaScript 代码: ```javascript // 农历数据 var lunarInfo = [ 0x04bd8, 0x04ae0, 0x0a570, 0x054d5, 0x0d260, 0x0d950, 0x16554, 0x056a0, 0x09ad0, 0x055d2, 0x04ae0, 0x0a5b6, 0x0a4d0, 0x0d250, 0x1d255, 0x0b540, 0x0d6a0, 0x0ada2, 0x095b0, 0x14977, 0x04970, 0x0a4b0, 0x0b4b5, 0x06a50, 0x06d40, 0x1ab54, 0x02b60, 0x09570, 0x052f2, 0x04970, 0x06566, 0x0d4a0, 0x0ea50, 0x06e95, 0x05ad0, 0x02b60, 0x186e3, 0x092e0, 0x1c8d7, 0x0c950, 0x0d4a0, 0x1d8a6, 0x0b550, 0x056a0, 0x1a5b4, 0x025d0, 0x092d0, 0x0d2b2, 0x0a950, 0x0b557, 0x06ca0, 0x0b550, 0x15355, 0x04da0, 0x0a5d0, 0x14573, 0x052d0, 0x0a9a8, 0x0e950, 0x06aa0, 0x0aea6, 0x0ab50, 0x04b60, 0x0aae4, 0x0a570, 0x05260, 0x0f263, 0x0d950, 0x05b57, 0x056a0, 0x096d0, 0x04dd5, 0x04ad0, 0x0a4d0, 0x0d4d4, 0x0d250, 0x0d558, 0x0b540, 0x0b5a0, 0x195a6, 0x095b0, 0x049b0, 0x0a974, 0x0a4b0, 0x0b27a, 0x06a50, 0x06d40, 0x0af46, 0x0ab60, 0x09570, 0x04af5, 0x04970, 0x064b0, 0x074a3, 0x0ea50, 0x06b58, 0x055c0, 0x0ab60, 0x096d5, 0x092e0, 0x0c960, 0x0d954, 0x0d4a0, 0x0da50, 0x07552, 0x056a0, 0x0abb7, 0x025d0, 0x092d0, 0x0cab5, 0x0a950, 0x0b4a0, 0x0baa4, 0x0ad50, 0x055d9, 0x04ba0, 0x0a5b0, 0x15176, 0x052b0, 0x0a930, 0x07954, 0x06aa0, 0x0ad50, 0x05b52, 0x04b60, 0x0a6e6, 0x0a4e0, 0x0d260, 0x0ea65, 0x0d530, 0x05aa0, 0x076a3, 0x096d0, 0x04bd7, 0x04ad0, 0x0a4d0, 0x1d0b6, 0x0d250, 0x0d520, 0x0dd45, 0x0b5a0, 0x056d0, 0x055b2, 0x049b0, 0x0a577, 0x0a4b0, 0x0aa50, 0x1b255, 0x06d20, 0x0ada0 ]; // 获取的所有农历日期 function getLunarDates(year) { var lunarDates = []; var start = new Date(year, 0, 1); // 当的第一天 var end = new Date(year, 11, 31); // 当的最后一天 var lunarYear = getLunarYear(year); // 当的农历份 // 遍历当每一天 for (var i = start; i <= end; i.setDate(i.getDate() + 1)) { var lunarDate = getLunarDate(i.getFullYear(), i.getMonth() + 1, i.getDate()); // 获取农历日期 var lunarMonth = lunarDate.month; // 农历月份 var lunarDay = lunarDate.day; // 农历日期 // 如果是闰月,则在闰月前面添加一个“闰”字 if (lunarMonth < 0) { lunarMonth = -lunarMonth; lunarDates.push("闰" + lunarMonth + "月" + getLunarDay(lunarDay)); } else { lunarDates.push(lunarMonth + "月" + getLunarDay(lunarDay)); } } return lunarDates; } // 获取某一天的农历日期 function getLunarDate(year, month, day) { var isLeap = false; // 是否是闰月 var leapMonth = 0; // 闰月月份 var offset = (new Date(year, month - 1, day).getTime() - new Date(1900, 0, 31).getTime()) / 86400000; // 计算天数偏移量 // 遍历农历份的每个月,计算出对应的农历月份和日期 for (var i = 1900; i < 2100 && offset > 0; i++) { var yearDays = getLunarYearDays(i); // 当的农历天数 offset -= yearDays; // 减去当的农历天数 if (offset < 0) break; // 计算闰月 leapMonth = getLunarLeapMonth(i); if (leapMonth > 0 && i == leapMonth + 1900) { isLeap = true; yearDays = getLunarLeapMonthDays(i); } // 减去当月的天数 offset -= yearDays; if (offset < 0) break; } // 计算农历月份和日期 var month = i - 1900; var year = isLeap ? "闰" + month : month; var day = offset + yearDays; // 如果是闰月,则 month 取相反数 if (leapMonth == month && isLeap) { month = -month; } return { year: year, month: month, day: day }; } // 获取农历份 function getLunarYear(year) { var i; var leap = 0; var temp = 0; // 计算从 1900 到今的总天数 for (i = 1900; i <= year && temp < 590000; i++) { temp = getLunarYearDays(i); leap = getLunarLeapMonth(i); } // 如果今有闰月,返回闰月月份,否则返回 0 if (year == i - 1) { return leap; } else { return 0; } } // 获取的农历天数 function getLunarYearDays(year) { var i; var sum = 348; for (i = 0x8000; i > 0x8; i >>= 1) { sum += (lunarInfo[year - 1900] & i) ? 1 : 0; } return sum + getLunarLeapMonthDays(year); } // 获取的闰月月份,如果没有闰月则返回 0 function getLunarLeapMonth(year) { return lunarInfo[year - 1900] & 0xf; } // 获取的闰月天数,如果没有闰月则返回 0 function getLunarLeapMonthDays(year) { if (getLunarLeapMonth(year)) { return (lunarInfo[year - 1900] & 0x10000) ? 30 : 29; } else { return 0; } } // 获取农历日期的中文表示 function getLunarDay(day) { var chineseTen = ["", "十", "二十", "三十"]; var chineseNumber = ["零", "一", "二", "三", "四", "五", "六", "七", "八", "九"]; var ten = parseInt(day / 10); var unit = day % 10; return chineseTen[ten] + chineseNumber[unit]; } ``` 使用方法: ```javascript // 获取的所有农历日期 var lunarDates = getLunarDates(new Date().getFullYear()); console.log(lunarDates); // ["1月初一", "1月初二", "1月初三", "1月初四", "1月初五", ...] ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值