文章目录

  • lunar 基本使用学习笔记
    • 介绍
    • 基本使用
    • 部分文档 API 转载
      • 阳历相关的方法 API
        • Solar 阳历
          • 阳历实例化
          • 阳历对象可以使用多种字符串输出方式:
          • 获取年、月、日
          • 儒略日
          • 获取星期
          • 判断是否闰年
          • 获取节日
          • 星座
          • 阳历日期推移(可**跳过节假日、周六周日**)
          • 公历转阴历(农历)
        • SolarWeek 阳历周
          • 阳历周实例化
          • 阳历对象转化为字符串
          • 获取阳历日期的年月日
          • 获取一周的起点
          • 获取当前日期是在当月第几周,返回序号从1开始
          • 获取当前日期是在当年第几周,返回序号从1开始
          • 获取阳历周对象中每一天的阳历对象,有可能出现某些天跨月的现象
          • 获取阳历周对象中的第一天,有可能出现跨月的现象
          • 获取加(减)几周后(前)的阳历周对象。
        • SolarMonth 阳历月
          • 阳历月的实例化有以下几种方式:
          • 阳历月对象可以使用两种字符串输出方式:
          • 获取阳历年、月
          • 获取阳历月对象中每一天的阳历对象
          • 获取阳历月对象中每一周的阳历对象
          • 获取加(减)几月后(前)的阳历月对象。
        • SolarSeason 阳历季度
          • 阳历季度的实例化有以下几种方式:
          • 阳历季度对象可以使用两种字符串输出方式:
          • 获取年、月
          • 获取阳历季度在一年中的序号,123月为1季度,456月为2季度
          • 获取阳历季度对象中的每一月
          • 获取加(减)几月后(前)的阳历季度对象。
        • SolarHalfYear 阳历半年
          • 阳历半年的实例化有以下几种方式:
          • 阳历半年对象可以使用两种字符串输出方式:
          • 获取年、月
          • 获取阳历半年在一年中的序号,123456月为1半年
          • 获取阳历半年对象中的每一月
          • 获取加(减)几月后(前)的阳历半年对象
        • SolarYear 阳历年
          • 阳历年的实例化有以下几种方式:
          • 阳历年对象可以使用两种字符串输出方式:
          • 获取年
          • 获取阳历年对象中的每一月
          • 获取加(减)几月后(前)的阳历年对象
        • SolarUtil 阳历工具
          • 判断某年是否闰年
          • 获取某年天数
          • 获取阳历某月天数
          • 获取某月周数
          • 获取某天位于当年第几天
      • 阴历相关的方法 API
        • Lunar 阴历
          • 阴历的实例化有以下几种方式:
          • 阴历对象可以使用两种字符串输出方式:
          • 获取年、月、日
            • 获取数字表示
            • 获取中文表示
          • 获取时辰
          • 获取星期
          • 节日
          • 生肖
          • 节气
          • 阴历日期的推移
          • 阴历转阳历
        • LunarMonth 阴历月
          • 阴历月
          • 阴历月转字符串
          • 阴历获取本月天数
          • 阴历是否闰月
          • 阴历获取当月初一
          • 获取加(减)几月后(前)的阳历月对象。
        • LunarYear 阴历年
          • 阴历年实例化有以下几种方式:
          • 阴历年自字符串输出:
          • 获取阴历月
          • 获取闰月
          • 获取节气表
          • 阴历年的推移
        • LunarUtil 阴历工具
          • 获取阴历某月天数
          • 获取指定阴历年月的下一月是几月
          • 阴历某年闰几月
          • 时辰
      • HolidayUtil 法定节假日相关 API
        • 数据修正及补充
        • 指定日期是否放假或调休
        • 获取指定月份的假期列表
        • 获取指定年份的假期列表
        • 获取节日相关的假期列表

lunar 基本使用学习笔记

介绍

lunar 是一无第三方依赖的公历(阳历)、农历(阴历、老黄历)、佛历和道历工具

支持星座、儒略日、干支、生肖、节气、节日、彭祖百忌、每日宜忌、吉神宜趋、凶煞宜忌、吉神(喜神/福神/财神/阳贵神/阴贵神)方位、胎神方位、冲煞、纳音、星宿、八字、五行、十神、建除十二值星、青龙名堂等十二神、黄道日及吉凶等。

tips:支持法定节假日维护

gitee 地址:lunar-javascript

  • 有多种语言版本(java、python、go、php、c#、typescript……)
  • 源码在 lunar-typescript 仓库中有

感觉此项目可以解决一些实际业务开发中可能会遇到的问题,故此记录一些可能会用到的 API 或者理解消化的结论

  • 个人认为普通的日期处理还是用 dayjs 那个库来处理(个人感觉体积、性能、API结构都会好些)
  • 在遇到需要处理农历、星座、节假日等特定场景(或者浓厚国风文化场景下)才会用的到功能时再结合此库进行处理
  • 粗略跳读文档整体后,发现此库功能十分强大,遇到与农历相关的内容可以在此库中找到一定的解决方案,遇到了可以翻翻有没有相关内容

观察 API 文档结构可发现,Lunar 库分为几个类

  • 实例化为对象使用其自身的一些方法进行数据处理转换

基本使用

如无特殊注明,后文代码中的 new Date() 日期均为 2022.11.27 / 2022.11.28(我是这两天整理的这份笔记)

  • 此文章使用 lunar-javascript 版本:v1.2.36

安装:npm install lunar-javascript

// 引入
import { Solar, Lunar, HolidayUtil } from 'lunar-javascript';console.log(Lunar.fromDate(new Date()).toFullString())
// 二〇二二年冬月初四 壬寅(虎)年 辛亥(猪)月 甲申(猴)日 午(马)时 纳音[金箔金 钗钏金 泉中水 路旁土] 星期日 北方玄武 星宿[虚日鼠](凶) 彭祖百忌[甲不开仓财物耗散 申不安床鬼祟入房] 喜神方位[艮](东北) 阳贵神方位[坤](西南) 阴贵神方位[艮](东北) 福神方位[坎](正北) 财神方位[艮](东北) 冲[(戊寅)虎] 煞[南]
console.log(Solar.fromYmd(2016, 1, 1).toFullString())
// 2016-01-01 00:00:00 闰年 星期五 (元旦节) 摩羯座
console.log(HolidayUtil.getHoliday(2020, 5, 2) + '')
// 2020-05-02 劳动节 2020-05-01

部分文档 API 转载

周末看文档学习时老是访问失败……看着看着下一页就看不了了…… 简直难顶

不知道是不是发布在 github pages 上的……(所以后文直接将一些文章拷贝了过来)

  • 看仓库 issue 似乎是作者服务器不太给力……

所以我这里就直接把一些可能用到的文档拷过来了

  • 佛历、道历 用不太到,没有放过来

阳历相关的方法 API

Solar 阳历

阳历实例化

阳历的实例化有以下几种方式:

  1. Solar.fromYmd(year, month, day)

    指定阳历年(数字)阳历月(数字)阳历日(数字)生成阳历对象。注意月份为1到12。

  2. Solar.fromYmdHms(year, month, day, hour, minute, second)

    指定阳历年(数字)阳历月(数字)阳历日(数字)阳历小时(数字)阳历分钟(数字)阳历秒钟(数字)生成阳历对象。注意月份为1到12。

  3. Solar.fromDate(date)

    指定日期(Date)生成阳历对象

  4. Solar.fromJulianDay(julianDay)

    指定儒略日(小数)生成阳历对象

  5. Solar.fromBaZi(yearGanZhi, monthGanZhi, dayGanZhi, timeGanZhi, sect, baseYear)

    通过八字年柱月柱日柱时柱获取匹配的阳历列表。sect为流派,可选1或2,不传则默认为2。baseYear为起始年份,不传则默认为1900,数字过小可能导致计算时间过长。该方法可能返回多条满足条件的记录。

// 年月日
var d = Solar.fromYmd(2016, 1, 1);
console.log(d);
// 2016-01-01// 年月日时分秒
d = Solar.fromYmdHms(2016, 1, 1, 20, 35, 0);
console.log(d);
// 2016-01-01// 日期
d = Solar.fromDate(new Date());
console.log(d.toFullString());
// 2022-11-28 16:23:30 星期一 射手座// 儒略日
d = Solar.fromJulianDay(2458960.5);
console.log(d.toFullString());
// 2020-04-21 00:00:00 闰年 星期二 金牛座// 八字反推阳历
var l = Solar.fromBaZi('庚子', '辛巳', '庚午', '丙子');
for (var i=0, j=l.length; i < j; i++) {d = l[i];console.log(d.toFullString());
}
// 2020-07-21 22:00:00 闰年 星期二 巨蟹座
// 1960-08-05 22:00:00 闰年 星期五 狮子座
阳历对象可以使用多种字符串输出方式:
  1. .toString()

    阳历对象的默认字符串输出

  2. .toFullString()

    阳历对象的全量字符串输出,包含尽量多的信息

  3. .toYmd()

    阳历对象的YYYY-MM-DD字符串输出

  4. .toYmdHms()

    阳历对象的YYYY-MM-DD HH:mm:ss字符串输出

// 实例化
var d = Solar.fromDate(new Date());// 默认字符串输出
console.log(d);
// 2022-11-28
console.log(d.toString());
// 2022-11-28// YYYY-MM-DD
console.log(d.toYmd());
// 2022-11-28// YYYY-MM-DD HH:mm:ss
console.log(d.toYmdHms());
// 2022-11-28 16:25:21// 全量字符串输出
console.log(d.toFullString());
// 2022-11-28 16:25:21 星期一 射手座
获取年、月、日
  1. .getYear()

    获取阳历年

  2. .getMonth()

    获取阳历月

  3. .getDay()

    获取阳历日

var d = Solar.fromDate(new Date());console.log(d.getYear());
// 2022
console.log(d.getMonth());
// 11
console.log(d.getDay());
// 28
儒略日

儒略日(Julian day,JD)是指由公元前4713年1月1日,协调世界时中午12时开始所经过的天数,多为天文学家采用,用以作为天文学的单一历法,把不同历法的年表统一起来。如果计算相隔若干年的两个日期之间间隔的天数,利用儒略日就比较方便。

可以通过该方法获取某个阳历时间的儒略日。

  1. .getJulianDay()

    返回儒略日(小数)。

也可通过儒略日来初始化一个阳历。

var d = Solar.fromDate(new Date());console.log(d.getJulianDay());
// 2459912.186388889
获取星期

阳历对象提供两种星期表示方式:

  1. .getWeek()

    获取星期数字,0代表星期日,1代表星期一,6代表星期六

  2. .getWeekInChinese()

    获取星期的中文:日一二三四五六

var d = Solar.fromDate(new Date());console.log(d.getWeek());
// 1
console.log(d.getWeekInChinese());
// 一
判断是否闰年
  1. .isLeapYear()

    返回true/falsetrue代表闰年,false代表非闰年。

var d = Solar.fromDate(new Date());console.log(d.isLeapYear());
// false
获取节日
var d = Solar.fromYmd(2016, 1, 1);
var l = d.getFestivals(); // 常见的国内国际节日(返回节日的数组,包括元旦节、国庆节等,也包括母亲节、父亲节、感恩节、圣诞节等,有可能同一天有多个,也可能没有)
console.log(l);
// ['元旦节']
for (var i=0, j=l.length; i<j; i++){console.log(l[i]);
}
// 元旦节d = Solar.fromYmd(2019, 3, 5);
l = d.getOtherFestivals(); // 其他纪念日(返回其他纪念日的数组,例如世界抗癌日、香港回归纪念日等,有可能同一天有多个,也可能没有)
console.log(l);
// ['周恩来诞辰纪念日', '中国青年志愿者服务日']
for (var i=0, j=l.length; i<j; i++){console.log(l[i]);
}
// 周恩来诞辰纪念日
// 中国青年志愿者服务日
星座
var d = Solar.fromDate(new Date());console.log(d.getXingZuo()); // 返回阳历对应的星座
// 射手
阳历日期推移(可跳过节假日、周六周日

.next(days, onlyWorkday)

var d = Solar.fromYmd(2022, 09, 27)
console.log(d.next(4).toString())
// 2022-10-01
console.log(d.next(4, true).toString()) /* 第二个参数为 true(onlyWorkday),跳过了节假日并自动处理补班(应该是按照法定节假日调休补班来的,当然特殊安排程序无法预料,需要自己额外处理)
打印结果跳过了国庆七天假,并把 10.8 这个周末算作了工作日(按照法定节假日调休补班来的)
*/
// 2022-10-08var d = Solar.fromYmd(2022, 10, 14)
console.log(d.next(1, true).toString()) // 打印结果跳过了周六周日
// 2022-10-17
公历转阴历(农历)
// 实例化
var solar = Solar.fromDate(new Date());
console.log(solar);
// 2022-11-27// 转阴历
var lunar = solar.getLunar();
console.log(lunar.toString());
// 二〇二二年冬月初四console.log(lunar.toFullString());
// 二〇二二年冬月初四 壬寅(虎)年 辛亥(猪)月 甲申(猴)日 午(马)时 纳音[金箔金 钗钏金 泉中水 路旁土] 星期日 北方玄武 星宿[虚日鼠](凶) 彭祖百忌[甲不开仓财物耗散 申不安床鬼祟入房] 喜神方位[艮](东北) 阳贵神方位[坤](西南) 阴贵神方位[艮](东北) 福神方位[坎](正北) 财神方位[艮](东北) 冲[(戊寅)虎] 煞[南]

SolarWeek 阳历周

阳历周实例化
  1. SolarWeek.fromYmd(year, month, day, start)

    指定阳历年(数字)阳历月(数字)阳历日(数字)星期几作为一周的开始(数字)生成阳历周对象。注意start值为1234560分别代表星期一至星期天。

  2. SolarWeek.fromDate(date, start)

    指定日期(Date)星期几作为一周的开始(数字)生成阳历周对象。注意start值为1234560分别代表星期一至星期天。

**注意:**一定要记得start参数,因为常见的周计算方式,有把星期一作为一周的起点,也有把星期日作为一周的起点,不同的起点计算周相关信息时会出现很大的出入。

有人会问为什么不设置一个默认值,因为一旦使用默认值,使用者不会引起注意,结果与他期望的不同,他就会觉得这玩意儿一点都不准。我需要使用者明确知道自己使用的是哪种计算方式。

var d = SolarWeek.fromYmd(2016,1,1,1);
console.log(d);
// 2016.1.1
console.log(d.toFullString());
// 2016年1月第1周
阳历对象转化为字符串
  1. .toString()

    阳历周对象的默认字符串输出,格式为:YYYY.M.I(I为数字,从1开始计,表示本月第几周)

  2. .toFullString()

    阳历周对象的全量字符串输出,包含尽量多的信息

//实例化
var d = SolarWeek.fromDate(new Date(),1);
//默认字符串输出
console.log(d);
// 2022.11.4
console.log(d.toString());
// 2022.11.4//全量字符串输出
console.log(d.toFullString());
// 2022年11月第4周
获取阳历日期的年月日
  • 感觉没啥用……(在使用 lunar 处理数据并进行周推移的时候可能会有用)
var d = SolarWeek.fromDate(new Date(),1);
console.log(d.getYear()); // 获取阳历年
// 2022
console.log(d.getMonth()); // 获取阳历月
// 11
console.log(d.getDay()); // 获取阳历日
// 27
获取一周的起点
  • 获取阳历周对象的星期几作为一周的开始,1234560分别代表星期一至星期天。
var d = SolarWeek.fromDate(new Date(),1); // 事实上你设置的起点是几,返回结果就是几,用不用,就看你心情了
console.log(d.getStart());
// 1
获取当前日期是在当月第几周,返回序号从1开始
//以星期一作为一周的起点
var d = SolarWeek.fromDate(new Date(),1);
console.log(d.getIndex());
// 4//以星期日作为一周的起点
d = SolarWeek.fromDate(new Date(),0);
console.log(d.getIndex());
// 5
获取当前日期是在当年第几周,返回序号从1开始
// 以星期一作为一周的起点
var d = SolarWeek.fromDate(new Date(), 1);
console.log(d.getIndexInYear());
// 48// 以星期日作为一周的起点
d = SolarWeek.fromDate(new Date(), 0);
console.log(d.getIndexInYear());
// 49
获取阳历周对象中每一天的阳历对象,有可能出现某些天跨月的现象
  1. .getDays()

    获取阳历周对象中每一天的阳历对象(可能跨月),返回一个数组。

  2. .getDaysInMonth()

    获取阳历周对象中每一天的阳历对象(把跨月的部分丢弃掉),返回一个数组。

//以星期一作为一周的起点
// new Date() => 2022.11.28
var d = SolarWeek.fromDate(new Date(),1);
var days = d.getDays();
for(var i=0,j=days.length;i<j;i++){console.log(days[i].toFullString());
}
// 2022-11-28 00:00:00 星期一 射手座
// 2022-11-29 00:00:00 星期二 射手座
// 2022-11-30 00:00:00 星期三 射手座
// 2022-12-01 00:00:00 星期四 射手座
// 2022-12-02 00:00:00 星期五 射手座
// 2022-12-03 00:00:00 星期六 射手座
// 2022-12-04 00:00:00 星期日 射手座days = d.getDaysInMonth();
for(var i=0,j=days.length;i<j;i++){console.log(days[i].toFullString());
}
// 2022-11-28 00:00:00 星期一 射手座
// 2022-11-29 00:00:00 星期二 射手座
// 2022-11-30 00:00:00 星期三 射手座//以星期日作为一周的起点
d = SolarWeek.fromDate(new Date(),0);
days = d.getDays();
for(var i=0,j=days.length;i<j;i++){console.log(days[i].toFullString());
}
// 2022-11-27 00:00:00 星期日 射手座
// 2022-11-28 00:00:00 星期一 射手座
// 2022-11-29 00:00:00 星期二 射手座
// 2022-11-30 00:00:00 星期三 射手座
// 2022-12-01 00:00:00 星期四 射手座
// 2022-12-02 00:00:00 星期五 射手座
// 2022-12-03 00:00:00 星期六 射手座
获取阳历周对象中的第一天,有可能出现跨月的现象
  1. .getFirstDay()

    获取阳历周对象中第一天的阳历对象(可能是上月的)。

  2. .getFirstDayInMonth()

    获取阳历周对象中第一天的阳历对象(只算本月的,如果第一天是上月,则往后顺延)。

//以星期一作为一周的起点
// new Date() => 2022.11.27
var d = SolarWeek.fromDate(new Date(),1);
console.log(d.getFirstDay().toFullString());
// 2022-11-21 00:00:00 星期一 天蝎座//以星期日作为一周的起点
d = SolarWeek.fromDate(new Date(),0);
console.log(d.getFirstDay().toFullString());
// 2022-11-27 00:00:00 星期日 射手座
获取加(减)几周后(前)的阳历周对象。

按月单独计算时,如果中间某一周有跨月现象,则那一周会当作2周计。

  1. .next(weeks, separateMonth)

    返回阳历周对象。
    weeks(数字):推移的周数,正数为往后推,负数为往前推。
    separateMonth(布尔,默认false):是否按月单独计算,true按月单独计算,false遇跨月也算一周。

var d = SolarWeek.fromDate(new Date(),1);
//往后推两周
console.log(d.next(2));
// 2022.12.2//往前推1周,即上周
console.log(d.next(-1));
// 2022.11.3

SolarMonth 阳历月

阳历月的实例化有以下几种方式:
  1. SolarMonth.fromYm(year, month)

    指定阳历年(数字)阳历月(数字)生成阳历月对象。

  2. SolarMonth.fromDate(date)

    指定日期(Date)生成阳历月对象。

var d = SolarMonth.fromYm(2016,1);
console.log(d);
// 2016-1
console.log(d.toFullString());
// 2016年1月
阳历月对象可以使用两种字符串输出方式:
  1. .toString()

    阳历月对象的默认字符串输出,格式为:YYYY-M

  2. .toFullString()

    阳历月对象的全量字符串输出,格式为:YYYY年M月

//实例化
var d = SolarMonth.fromDate(new Date());
//默认字符串输出
console.log(d);
// 2022-11
console.log(d.toString());
// 2022-11//全量字符串输出
console.log(d.toFullString());
// 2022年11月
获取阳历年、月
  1. .getYear()

    获取阳历年

  2. .getMonth()

    获取阳历月

var d = SolarMonth.fromDate(new Date());console.log(d.getYear());
// 2022
console.log(d.getMonth());
// 11
获取阳历月对象中每一天的阳历对象
  1. .getDays()

    返回一个阳历对象的数组。

// new Date() => 2022.11.27
var d = SolarMonth.fromDate(new Date());var days = d.getDays();
for(var i=0,j=days.length;i<j;i++){console.log(days[i].toFullString());
}
// 2022-11-01 00:00:00 星期二 (万圣节) 天蝎座
// 2022-11-02 00:00:00 星期三 天蝎座
// 2022-11-03 00:00:00 星期四 天蝎座
// 2022-11-04 00:00:00 星期五 天蝎座
// 2022-11-05 00:00:00 星期六 天蝎座
// 2022-11-06 00:00:00 星期日 天蝎座
// 2022-11-07 00:00:00 星期一 天蝎座
// 2022-11-08 00:00:00 星期二 天蝎座
// 2022-11-09 00:00:00 星期三 天蝎座
// 2022-11-10 00:00:00 星期四 天蝎座
// 2022-11-11 00:00:00 星期五 天蝎座
// 2022-11-12 00:00:00 星期六 天蝎座
// 2022-11-13 00:00:00 星期日 天蝎座
// 2022-11-14 00:00:00 星期一 天蝎座
// 2022-11-15 00:00:00 星期二 天蝎座
// 2022-11-16 00:00:00 星期三 天蝎座
// 2022-11-17 00:00:00 星期四 天蝎座
// 2022-11-18 00:00:00 星期五 天蝎座
// 2022-11-19 00:00:00 星期六 天蝎座
// 2022-11-20 00:00:00 星期日 天蝎座
// 2022-11-21 00:00:00 星期一 天蝎座
// 2022-11-22 00:00:00 星期二 天蝎座
// 2022-11-23 00:00:00 星期三 射手座
// 2022-11-24 00:00:00 星期四 (感恩节) 射手座
// 2022-11-25 00:00:00 星期五 射手座
// 2022-11-26 00:00:00 星期六 射手座
// 2022-11-27 00:00:00 星期日 射手座
// 2022-11-28 00:00:00 星期一 射手座
// 2022-11-29 00:00:00 星期二 射手座
// 2022-11-30 00:00:00 星期三 射手座
获取阳历月对象中每一周的阳历对象
  1. .getWeeks(start)

    返回一个阳历周对象的数组。
    start:星期几作为一周的开始,1234560分别代表星期一至星期天

var d = SolarMonth.fromDate(new Date());var weeks = d.getWeeks(1);
for(var i=0,j=weeks.length;i<j;i++){console.log(weeks[i].toFullString());
}
// 2022年11月第1周
// 2022年11月第2周
// 2022年11月第3周
// 2022年11月第4周
// 2022年11月第5周
获取加(减)几月后(前)的阳历月对象。
  1. .next(months)

    返回阳历月对象。
    months(数字):推移的月数,正数为往后推,负数为往前推。

var d = SolarMonth.fromDate(new Date());//往后推2月
console.log(d.next(2).toFullString());
// 2023年1月

SolarSeason 阳历季度

阳历季度的实例化有以下几种方式:
  1. SolarSeason.fromYm(year, month)

    指定阳历年(数字)阳历月(数字)生成阳历季度对象。

  2. SolarSeason.fromDate(date)

    指定日期(Date)生成阳历季度对象。

var d = SolarSeason.fromYm(2016,1);
console.log(d);
// 2016.1
console.log(d.toFullString());
// 2016年1季度
阳历季度对象可以使用两种字符串输出方式:
  1. .toString()

    阳历季度对象的默认字符串输出,格式为:YYYY-I,I为季度序号:1、2、3、4

  2. .toFullString()

    阳历季度对象的全量字符串输出,格式为:YYYY年I季度,I为季度序号:1、2、3、4

//实例化
var d = SolarSeason.fromDate(new Date());
//默认字符串输出
console.log(d);
// 2022.4
console.log(d.toString());
// 2022.4//全量字符串输出
console.log(d.toFullString
// 2022年4季度
获取年、月
  1. .getYear()

    获取阳历年

  2. .getMonth()

    获取阳历月

var d = SolarSeason.fromDate(new Date());console.log(d.getYear());
// 2022console.log(d.getMonth());
// 11
获取阳历季度在一年中的序号,123月为1季度,456月为2季度
  1. .getIndex()

    返回序号:1、2、3、4

var d = SolarSeason.fromDate(new Date());console.log(d.getIndex());
// 4
获取阳历季度对象中的每一月
  1. .getMonths()

    返回一个阳历月对象的数组。

var d = SolarSeason.fromDate(new Date());var months = d.getMonths();
for(var i=0,j=months.length;i<j;i++){console.log(months[i].toFullString());
}
// 2022年10月
// 2022年11月
// 2022年12月
获取加(减)几月后(前)的阳历季度对象。
  1. .next(seasons)

    返回阳历季度对象。
    seasons(数字):推移的季度数,正数为往后推,负数为往前推。

var d = SolarSeason.fromDate(new Date());//往后推2季度
console.log(d.next(2).toFullString());
// 2023年2季度

SolarHalfYear 阳历半年

阳历半年的实例化有以下几种方式:
  1. SolarHalfYear.fromYm(year, month)

    指定阳历年(数字)阳历月(数字)生成阳历半年对象。

  2. SolarHalfYear.fromDate(date)

    指定日期(Date)生成阳历半年对象。

var d = SolarHalfYear.fromYm(2016,1);
console.log(d);
// 2016.1
console.log(d.toFullString());
// 2016年上半年
阳历半年对象可以使用两种字符串输出方式:
  1. .toString()

    阳历半年对象的默认字符串输出,格式为:YYYY-I,I为半年序号:1、2

  2. .toFullString()

    阳历半年对象的全量字符串输出,格式为:YYYY年I半年,I值为:上、下

//实例化
var d = SolarHalfYear.fromDate(new Date());//默认字符串输出
console.log(d);
// 2022.2
console.log(d.toString());
// 2022.2//全量字符串输出
console.log(d.toFullString());
// 2022年下半年
获取年、月
  1. .getYear()

    获取阳历年

  2. .getMonth()

    获取阳历月

var d = SolarHalfYear.fromDate(new Date());console.log(d.getYear());
// 2022
console.log(d.getMonth());
// 11
获取阳历半年在一年中的序号,123456月为1半年
  1. .getIndex()

    返回序号:1、2

var d = SolarHalfYear.fromDate(new Date());console.log(d.getIndex());
// 2
获取阳历半年对象中的每一月
  1. .getMonths()

    返回一个阳历月对象的数组。

var d = SolarHalfYear.fromDate(new Date());var months = d.getMonths();
for(var i=0,j=months.length;i<j;i++){console.log(months[i].toFullString());
}
// 2022年7月
// 2022年8月
// 2022年9月
// 2022年10月
// 2022年11月
// 2022年12月
获取加(减)几月后(前)的阳历半年对象
  1. .next(halfYears)

    返回阳历半年对象。
    halfYears(数字):推移的半年数,正数为往后推,负数为往前推。

var d = SolarHalfYear.fromDate(new Date());//往后推2半年
console.log(d.next(2).toFullString());
// 2023年下半年

SolarYear 阳历年

阳历年的实例化有以下几种方式:
  1. SolarYear.fromYear(year)

    指定阳历年(数字)生成阳历年对象。

  2. SolarYear.fromDate(date)

    指定日期(Date)生成阳历年对象。

var d = SolarYear.fromYear(2016);
console.log(d);
// 2016console.log(d.toFullString());
// 2016年
阳历年对象可以使用两种字符串输出方式:
  1. .toString()

    阳历年对象的默认字符串输出,格式为:YYYY

  2. .toFullString()

    阳历年对象的全量字符串输出,格式为:YYYY年

//实例化
var d = SolarYear.fromDate(new Date());//默认字符串输出
console.log(d);
// 2022
console.log(d.toString());
// 2022//全量字符串输出
console.log(d.toFullString());
// 2022年
获取年
  1. .getYear()

    获取阳历年

var d = SolarYear.fromDate(new Date());console.log(d.getYear());
// 2022
获取阳历年对象中的每一月
  1. .getMonths()

    返回一个阳历月对象的数组。

var d = SolarYear.fromDate(new Date());var months = d.getMonths();
for(var i=0,j=months.length;i<j;i++){console.log(months[i].toFullString());
}
// 2022年1月
// 2022年2月
// 2022年3月
// 2022年4月
// 2022年5月
// 2022年6月
// 2022年7月
// 2022年8月
// 2022年9月
// 2022年10月
// 2022年11月
// 2022年12月
获取加(减)几月后(前)的阳历年对象
  1. .next(years)

    返回阳历年对象。
    years(数字):推移的年数,正数为往后推,负数为往前推。

var d = SolarYear.fromDate(new Date());//往后推2年
console.log(d.next(2).toFullString());
// 2024年

SolarUtil 阳历工具

判断某年是否闰年
  1. SolarUtil.isLeapYear(year)

    返回布尔值。
    true:是闰年。
    false:非闰年。

console.log(SolarUtil.isLeapYear(2016));
// true
获取某年天数

闰年366天,平年365天。

  1. SolarUtil.getDaysOfYear(year)

    返回天数
    year:阳历年(数字)。

console.log(SolarUtil.getDaysOfYear(2016));
// 366
获取阳历某月天数
  1. SolarUtil.getDaysOfMonth(year, month)

    返回天数(数字)。
    year:阳历年(数字)。
    month:阳历月(数字)。

console.log(SolarUtil.getDaysOfMonth(2016,2));
// 29
获取某月周数
  1. SolarUtil.getDaysOfMonth(year, month, start)

    返回周数(数字)。
    year:阳历年(数字)。
    month:阳历月(数字)。
    start:星期几作为一周的开始,1234560分别代表星期一至星期天(数字)。

console.log(SolarUtil.getWeeksOfMonth(2016,2,1));
// 5
获取某天位于当年第几天

从1月1日开始累积的当年天数。例如1月2日,位于当年第2天,2月1日,位于当年第32天。

  1. SolarUtil.getDaysInYear(year, month, day)

    返回位于当年第几天
    year:阳历年(数字)。
    month:阳历月(数字)。
    day:阳历日(数字)。

console.log(SolarUtil.getDaysInYear(2016, 3, 1));
// 61

阴历相关的方法 API

干支 禄 物候 数九 三伏 六曜 二十八宿 七政 四宫 四神兽 等文档省略了,个人感觉用不太到

Lunar 阴历

阴历的实例化有以下几种方式:
  1. Lunar.fromYmd(lunarYear, lunarMonth, lunarDay)

    指定阴历年(数字)阴历月(数字)阴历日(数字)生成阴历对象。注意月份为1到12,闰月为负,即闰2月=-2。

  2. Lunar.fromYmdHms(lunarYear, lunarMonth, lunarDay, hour, minute, second)

    指定阴历年(数字)阴历月(数字)阴历日(数字)阳历小时(数字)阳历分钟(数字)阳历秒钟(数字)生成阴历对象。注意月份为1到12,闰月为负,即闰2月=-2。

  3. Lunar.fromDate(date)

    指定阳历日期(Date)生成阴历对象

var d = Lunar.fromYmd(1986, 4, 21);
console.log(d);
// 一九八六年四月廿一
console.log(d.toFullString());
// 一九八六年四月廿一 丙寅(虎)年 癸巳(蛇)月 癸酉(鸡)日 子(鼠)时 纳音[炉中火 长流水 剑锋金 桑柘木] 星期四 北方玄武 星宿[斗木獬](吉) 彭祖百忌[癸不词讼理弱敌强 酉不会客醉坐颠狂] 喜神方位[巽](东南) 阳贵神方位[巽](东南) 阴贵神方位[震](正东) 福神方位[艮](东北) 财神方位[离](正南) 冲[(丁卯)兔] 煞[东]d = Lunar.fromDate(new Date());
console.log(d);
// 二〇二二年冬月初五
console.log(d.toFullString());
// 二〇二二年冬月初五 壬寅(虎)年 辛亥(猪)月 乙酉(鸡)日 辰(龙)时 纳音[金箔金 钗钏金 泉中水 白蜡金] 星期一 北方玄武 星宿[危月燕](凶) 彭祖百忌[乙不栽植千株不长 酉不会客醉坐颠狂] 喜神方位[乾](西北) 阳贵神方位[坤](西南) 阴贵神方位[坎](正北) 福神方位[坤](西南) 财神方位[艮](东北) 冲[(己卯)兔] 煞[东]d = Lunar.fromYmdHms(1986, 4, 21, 20, 5, 0);
// 时辰
console.log(d.getTimeZhi()+'时');
// 戌时
阴历对象可以使用两种字符串输出方式:
  1. .toString()

    阴历对象的默认字符串输出

  2. .toFullString()

    阴历对象的全量字符串输出,包含尽量多的信息

//实例化
var d = Lunar.fromDate(new Date());//默认字符串输出
console.log(d);
// 二〇二二年冬月初五
console.log(d.toString());
// 二〇二二年冬月初五//全量字符串输出
console.log(d.toFullString());
// 二〇二二年冬月初五 壬寅(虎)年 辛亥(猪)月 乙酉(鸡)日 辰(龙)时 纳音[金箔金 钗钏金 泉中水 白蜡金] 星期一 北方玄武 星宿[危月燕](凶) 彭祖百忌[乙不栽植千株不长 酉不会客醉坐颠狂] 喜神方位[乾](西北) 阳贵神方位[坤](西南) 阴贵神方位[坎](正北) 福神方位[坤](西南) 财神方位[艮](东北) 冲[(己卯)兔] 煞[东]
获取年、月、日
获取数字表示
  1. .getYear()

    获取阴历年的数字

  2. .getMonth()

    获取阴历月的数字,值从1到12,但闰月为负数,如闰二月=-2。

  3. .getDay()

    获取阴历日的数字

获取中文表示
  1. .getYearInChinese()

    获取阴历年的中文

  2. .getMonthInChinese()

    获取阴历月的中文

  3. .getDayInChinese()

    获取阴历日的中文

var d = Lunar.fromDate(new Date());console.log(d.getYear());
// 2022
console.log(d.getMonth());
// 11
console.log(d.getDay());
// 5console.log(d.getYearInChinese());
// 二〇二二
console.log(d.getMonthInChinese());
// 冬
console.log(d.getDayInChinese());
// 初五
获取时辰

时辰为中国传统计时单位。把一昼夜平分为十二段,每段叫做一个时辰,对应12地支,合现在的两小时。

时辰对照表参考阴历工具-时辰

  1. .getTimeGan()

    获取时辰天干

  2. .getTimeZhi()

    获取时辰地支

  3. .getTimeInGanZhi()

    获取时辰干支

  4. .getTimeShengXiao()

    获取时辰生肖

  5. .getTime()

    获取时辰对象

  6. .getTimes()

    获取当天的所有时辰对象,由于有早子时和晚子时,会返回13个对象。

var d = Lunar.fromDate(new Date());console.log(d.getTimeGan());
// 庚
console.log(d.getTimeZhi());
// 辰
console.log(d.getTimeInGanZhi());
// 庚辰
console.log(d.getTimeShengXiao());
// 龙// 获取当天时辰列表
var times = d.getTimes();
for (var i = 0, j = times.length; i < j; i++){var time = times[i];console.log(time.getMinHm() + ' - ' + time.getMaxHm() + ' : ' + time.getGanZhi());
}
// 00:00 - 00:59 : 丙子
// 01:00 - 02:59 : 丁丑
// 03:00 - 04:59 : 戊寅
// 05:00 - 06:59 : 己卯
// 07:00 - 08:59 : 庚辰
// 09:00 - 10:59 : 辛巳
// 11:00 - 12:59 : 壬午
// 13:00 - 14:59 : 癸未
// 15:00 - 16:59 : 甲申
// 17:00 - 18:59 : 乙酉
// 19:00 - 20:59 : 丙戌
// 21:00 - 22:59 : 丁亥
// 23:00 - 23:59 : 戊子
获取星期

阴历对象也可直接获取星期,同样提供两种星期表示方式:

  1. .getWeek()

    获取星期数字,0代表星期日,1代表星期一,6代表星期六

  2. .getWeekInChinese()

    获取星期的中文:日一二三四五六

中国古代也用“七曜日”来表示星期,详见七政(七曜)。

var d = Lunar.fromDate(new Date());console.log(d.getWeek());
// 1
console.log(d.getWeekInChinese());
// 一
节日
  1. .getFestivals()

    返回常用节日的数组,包括春节、中秋、元宵等,有可能同一天有多个,也可能没有。

  2. .getOtherFestivals()

    返回其他传统节日的数组,包括寒衣节、下元节、祭灶日等,有可能同一天有多个,也可能没有。

注意:这里的节日有可能放假,有可能不放假,是否放假需参考法定假日。

var d = Lunar.fromYmd(2016, 2, 2);
var l = d.getFestivals();
for (var i=0, j=l.length; i<j; i++){console.log(l[i]);
}
// 龙头节l = d.getOtherFestivals();
for (var i=0, j=l.length; i<j; i++){console.log(l[i]);
}
// 社日节
生肖

十二生肖,又叫属相,是中国与十二地支相配以人出生年份的十二种动物,包括鼠、牛、虎、兔、龙、蛇、马、羊、猴、鸡、狗、猪。

十二生肖是十二地支的形象化代表,即子(鼠)、丑(牛)、寅(虎)、卯(兔)、辰(龙)、巳(蛇)、午(马)、未(羊)、申(猴)、酉(鸡)、戌(狗)、亥(猪)。

由于生肖对应地支,所以年、月、日、时辰都对应生肖。

  1. .getYearShengXiao()

    获取年的生肖(以正月初一起)

  2. .getMonthShengXiao()

    获取月的生肖(以节交接当天起)

  3. .getDayShengXiao()

    获取日的生肖

  4. .getTimeShengXiao()

    获取时辰的生肖

  5. .getShengxiao()

    [已过时] 获取年的生肖,为兼容老版本而保留,等同于getYearShengXiao

由于年月的干支划分方式有区别,所以生肖也会对应不同。

  1. .getYearShengXiaoByLiChun()

    获取年的生肖(以立春当天起)

  2. .getYearShengXiaoExact()

    获取年的生肖(以立春交接时刻起)

  3. .getMonthShengXiaoExact()

    获取月的生肖(以节交接时刻起)

var d = Lunar.fromDate(new Date());console.log('年:'+d.getYearShengXiao());
// 年:虎
console.log('月:'+d.getMonthShengXiao());
// 月:猪
console.log('日:'+d.getDayShengXiao());
// 日:鸡
console.log('时:'+d.getTimeShengXiao());
// 时:龙console.log('年:'+d.getYearShengXiaoByLiChun());
// 年:虎
console.log('年:'+d.getYearShengXiaoExact());
// 年:虎
console.log('月:'+d.getMonthShengXiaoExact());
// 月:猪
节气

二十四节气包括十二节(立春、惊蛰、清明、立夏、芒种、小暑、立秋、白露、寒露、立冬、大雪、小寒)和十二气(雨水、春分、谷雨、小满、夏至、大暑、处暑、秋分、霜降、小雪、冬至、大寒)。

节气的计算使用了寿星天文历的算法。

节气先后顺序为以冬至开始,以大雪结束,通常冬至位于阳历的上一年。

  1. getJie()

    获取节令名(字符串),当匹配到键为DA_XUE的节令时,也返回中文的大雪,未匹配时返回空字符串

  2. getQi()

    获取气令名(字符串),当匹配到键为DONG_ZHI的气令时,也返回中文的冬至,未匹配时返回空字符串

  3. getJieQi()

    获取节气名(字符串),当匹配到键为DA_XUE的节令时,也返回中文的大雪,当匹配到键为DONG_ZHI的气令时,也返回中文的冬至,未匹配时返回空字符串

  4. getJieQiTable()

    获取当年的节气表(键值对方式,键为节气名称,值为对应阳历。)

  5. getJieQiList()

    获取当年的节气名称(按时间先后排序),由于js中getJieQiTable无法排序,所以提供该方法,某些语言(如java)中getJieQiTable已经排序,所以不提供该方法。

注意:为了在任何一天都能获取到上一节气、下一节气而不用考虑跨年的问题,在头部追加一个键为DA_XUE的节令来表示上个节气周期末的大雪;在最后追加一个键为DONG_ZHI的气令来表示阳历年末的冬至;同时,在最后追加一个键为XIAO_HAN的节令来表示下一阳历年初的小寒,追加一个键为DA_HAN的气令来表示下一阳历年初的大寒,追加一个键为LI_CHUN的气令来表示下一阳历年初的立春,追加YU_SHUI表示雨水,追加JING_ZHE表示惊蛰。所以最终节气表如下:

DA_XUE, 冬至, 小寒, 大寒, 立春, 雨水, 惊蛰, 春分, 清明, 谷雨, 立夏, 小满, 芒种, 夏至, 小暑, 大暑, 立秋, 处暑, 白露, 秋分, 寒露, 霜降, 立冬, 小雪, 大雪, DONG_ZHI, XIAO_HAN, DA_HAN, LI_CHUN, YU_SHUI, JING_ZHE

其中冬至大雪为一个节气周期,DA_XUE冬至位于阳历上一年,小寒DONG_ZHI位于阳历同一年,XIAO_HANDA_HANLI_CHUNYU_SHUI、和JING_ZHE位于阳历下一年。可参考下方示例打印的节气表辅助理解。

为了更好的封装,单独提供了一个新的JieQi对象,包含节气名称和阳历日期,JieQi对象提供如下方法:

  1. getName()

    获取名称(字符串)

  2. getSolar()

    获取阳历对象

  3. isJie()

    是否节令,返回true/false

  4. isQi()

    是否气令,返回true/false

同时也为Lunar对象提供了新的方法,更加方便的获取临近的节气:

  1. getPrevJieQi(wholeDay)

    获取上一节气(逆推的第一个节气)。参数wholeDay传true/false,true代表按天匹配,false代表按精确时刻匹配。返回JieQi对象

  2. getNextJieQi(wholeDay)

    获取下一节气(顺推的第一个节气)。参数wholeDay传true/false,true代表按天匹配,false代表按精确时刻匹配。返回JieQi对象

  3. getCurrentJieQi()

    获取当前节气,返回JieQi对象,当天无节气返回null

  4. getPrevJie(wholeDay)

    获取上一节令(逆推的第一个节令)。参数wholeDay传true/false,true代表按天匹配,false代表按精确时刻匹配。返回JieQi对象

  5. getNextJie(wholeDay)

    获取下一节令(顺推的第一个节令)。参数wholeDay传true/false,true代表按天匹配,false代表按精确时刻匹配。返回JieQi对象

  6. getCurrentJie()

    获取当天节令,返回JieQi对象,当天无节令返回null

  7. getPrevQi(wholeDay)

    获取上一气令(逆推的第一个气令)。参数wholeDay传true/false,true代表按天匹配,false代表按精确时刻匹配。返回JieQi对象

  8. getNextQi(wholeDay)

    获取下一气令(顺推的第一个气令)。参数wholeDay传true/false,true代表按天匹配,false代表按精确时刻匹配。返回JieQi对象

  9. getCurrentQi()

    获取当天气令,返回JieQi对象,当天无气令返回null

//农历2020年3月12日是清明节
var d = Lunar.fromYmd(2020,3,12);console.log('节:'+d.getJie());
// 节:清明
console.log('气:'+d.getQi());
// 气:
console.log('节气:'+d.getJieQi());
// 节气:清明//获取立春交接的准确时间
console.log('立春:'+d.getJieQiTable()['立春'].toYmdHms());
// 立春:2020-02-04 17:03:12var l = d.getJieQiList();
console.log(l);
// DA_XUE,冬至,小寒,大寒,立春,雨水,惊蛰,春分,清明,谷雨,立夏,小满,芒种,夏至,小暑,大暑,立秋,处暑,白露,秋分,寒露,霜降,立冬,小雪,大雪,DONG_ZHI,XIAO_HAN,DA_HAN,LI_CHUN,YU_SHUI,JING_ZHEvar jieQi = d.getJieQiTable();for (var i=0, j=l.length; i<j; i++){var name = l[i];console.log(name + ' = ' + jieQi[name].toYmdHms());
}
// DA_XUE = 2019-12-07 18:18:21
// 冬至 = 2019-12-22 12:19:18
// 小寒 = 2020-01-06 05:29:59
// 大寒 = 2020-01-20 22:54:33
// 立春 = 2020-02-04 17:03:12
// 雨水 = 2020-02-19 12:56:53
// 惊蛰 = 2020-03-05 10:56:44
// 春分 = 2020-03-20 11:49:29
// 清明 = 2020-04-04 15:38:02
// 谷雨 = 2020-04-19 22:45:21
// 立夏 = 2020-05-05 08:51:16
// 小满 = 2020-05-20 21:49:09
// 芒种 = 2020-06-05 12:58:18
// 夏至 = 2020-06-21 05:43:33
// 小暑 = 2020-07-06 23:14:20
// 大暑 = 2020-07-22 16:36:44
// 立秋 = 2020-08-07 09:06:03
// 处暑 = 2020-08-22 23:44:48
// 白露 = 2020-09-07 12:07:54
// 秋分 = 2020-09-22 21:30:32
// 寒露 = 2020-10-08 03:55:07
// 霜降 = 2020-10-23 06:59:25
// 立冬 = 2020-11-07 07:13:46
// 小雪 = 2020-11-22 04:39:38
// 大雪 = 2020-12-07 00:09:21
// DONG_ZHI = 2020-12-21 18:02:12
// XIAO_HAN = 2021-01-05 11:23:17
// DA_HAN = 2021-01-20 04:39:42
// LI_CHUN = 2021-02-03 22:58:39
// YU_SHUI = 2021-02-18 18:43:49
// JING_ZHE = 2021-03-05 16:53:32d = Lunar.fromDate(new Date());
var prev = d.getPrevJieQi();
console.log('上一节气 = ' + prev.getName() + ' ' +prev.getSolar().toYmdHms());
// 上一节气 = 小雪 2022-11-22 16:20:18
var next = d.getNextJieQi();
console.log('下一节气 = ' + next.getName() + ' ' +next.getSolar().toYmdHms());
// 下一节气 = 大雪 2022-12-07 11:46:04
阴历日期的推移
  1. .next(days)

    days(数字)为推移的天数,正数为往后推,负数为往前推。返回推移后那天的阴历对象。

你也可以使用阳历进行日期推移,然后再转阴历,效果一样,但可能会更耗时。

var d = Lunar.fromDate(new Date());// 往后推两天,即后天
console.log(d.next(2));
// 二〇二二年冬月初七// 往前推1天,即昨天
console.log(d.next(-1));
// 二〇二二年冬月初四
阴历转阳历

阴历和阳历之间的相互转换,必须得支持才行。

  1. .getSolar()

    返回对应的阳历对象。

// 实例化
var lunar = Lunar.fromYmd(1986, 4, 21);console.log(lunar);
// 一九八六年四月廿一// 转阳历
var solar = lunar.getSolar();console.log(solar.toString());
// 1986-05-29
console.log(solar.toFullString());
// 1986-05-29 00:00:00 星期四 双子座

LunarMonth 阴历月

阴历月

阴历月自v1.2.0版本加入,它的实例化有以下几种方式:

  1. new LunarMonth(lunarYear, lunarMonth, dayCount, firstJulianDay)

    指定阴历年(数字)阴历月(数字)当月天数(数字)初一的儒略日(数字)生成阴历月对象。其中阴历月取值1-12,闰月为负数,如闰2月为-2。当月天数为29或30,小月29天,大月30天。

  2. LunarYear.fromYm(lunarYear, lunarMonth)

    指定阴历年(数字)阴历月(数字)自动计算生成阴历月对象。其中阴历月取值1-12,闰月为负数,如闰2月为-2。

var lunarMonth = LunarMonth.fromYm(2012, -4);
console.log(lunarMonth.toString());
// 2012年闰四月(29)天
阴历月转字符串
  1. .toString()

    阴历月对象的默认字符串输出,格式为:YYYY年M月(D)天

//实例化
var lunarMonth = LunarMonth.fromYm(3333, 2);//默认字符串输出
console.log(lunarMonth);
// 3333年二月(30)天
console.log(lunarMonth.toString());
// 3333年二月(30)天
阴历获取本月天数

阴历月自v1.2.0版本加入,阴历一个月只可能是30天或者29天。获取天数可以判断当月是大月(30天)还是小月(29天)。

  1. .getDayCount()

    获取当月天数

var lunarMonth = LunarMonth.fromYm(2021, 9);
console.log(lunarMonth.getDayCount());
// 30
阴历是否闰月
  1. .isLeap()

    判断当月是否闰月,是返回true,否返回false

var lunarMonth = LunarMonth.fromYm(2020, 4);
console.log(lunarMonth.isLeap());
// falselunarMonth = LunarMonth.fromYm(2020, -4);
console.log(lunarMonth.isLeap());
// true
阴历获取当月初一
  1. .getFirstJulianDay()

    获取当月初一的儒略日,有了儒略日,就可以很方便的计算出阳历和阴历日期。

var lunarMonth = LunarMonth.fromYm(2021, 9);var firstJulianDay = lunarMonth.getFirstJulianDay();// 儒略日转阳历
var solar = Solar.fromJulianDay(firstJulianDay);// 转阴历
var lunar = solar.getLunar();console.log(firstJulianDay);
// 2459494
console.log(solar.toYmd());
// 2021-10-06
console.log(lunar.toString());
// 二〇二一年九月初一
获取加(减)几月后(前)的阳历月对象。

按月单独计算时,如果中间某一周有跨月现象,则那一周会当作2周计。

  1. .next(months)

    返回阴历月对象。
    months(数字):推移的月数,正数为往后推,负数为往前推。

// v1.2.27
var d = LunarMonth.fromYm(2022, 1);// 往后推2月
console.log(d.next(2).toString());
// 2022年三月(30)天

LunarYear 阴历年

阴历年实例化有以下几种方式:
  1. new LunarYear(lunarYear)

    指定阴历年(数字)生成阴历年对象。

  2. LunarYear.fromYear(lunarYear)

    指定阴历年(数字)生成阴历年对象。

var lunarYear = LunarYear.fromYear(2012);
console.log(lunarYear);
// 2012
console.log(lunarYear.toFullString());
// 2012年
阴历年自字符串输出:
  1. .toString()

    阴历年对象的默认字符串输出,格式为:YYYY

  2. .toFullString()

    阴历年对象的全量字符串输出,格式为:YYYY年

//实例化
var lunarYear = LunarYear.fromYear(3333);//默认字符串输出
console.log(lunarYear);
// 3333
console.log(lunarYear.toString());
// 3333//全量字符串输出
console.log(lunarYear.toFullString());
// 3333年
获取阴历月
  1. .getMonths()

    获取阴历年对象中的所有月份(为保障节气的连续性,增加了冗余的月份)。返回一个阴历月对象的数组。

  2. .getMonth(lunarMonth)

    指定当年的阴历月份(数字)获取阴历月对象。参数可选1-12,闰月为负数,如闰2月为-2。如果没有匹配的月份,返回null。

var lunarYear = LunarYear.fromYear(2020);var months = lunarYear.getMonths();
for(var i=0, j=months.length; i<j; i++){console.log(months[i].toString());
}
// 2019年冬月(30)天
// 2019年腊月(30)天
// 2020年正月(29)天
// 2020年二月(30)天
// 2020年三月(30)天
// 2020年四月(30)天
// 2020年闰四月(29)天
// 2020年五月(30)天
// 2020年六月(29)天
// 2020年七月(29)天
// 2020年八月(30)天
// 2020年九月(29)天
// 2020年十月(30)天
// 2020年冬月(29)天
// 2020年腊月(30)天
获取闰月
  1. .getLeapMonth()

    获取闰月数字,1代表闰1月,0代表无闰月

var lunarYear = LunarYear.fromYear(2020);
console.log(lunarYear.getLeapMonth());
// 4
获取节气表
  1. .getJieQiJulianDays()

    获取阴历年对象中的所有节气(儒略日)。返回一个数组。

var lunarYear = LunarYear.fromYear(2020);var jieQiJulianDays = lunarYear.getJieQiJulianDays();
for(var i=0, j=jieQiJulianDays.length; i<j; i++){var julianDay = jieQiJulianDays[i];var solar = Solar.fromJulianDay(julianDay);var lunar = solar.getLunar();console.log(julianDay + ' = ' + solar.toYmdHms() + ' ' + lunar.getJieQi());
}
// 2458825.262738939 = 2019-12-07 18:18:21 大雪
// 2458840.013406825 = 2019-12-22 12:19:18 冬至
// 2458854.729155622 = 2020-01-06 05:29:59 小寒
// 2458869.4545455333 = 2020-01-20 22:54:33 大寒
// 2458884.2105561327 = 2020-02-04 17:03:12 立春
// 2458899.039498242 = 2020-02-19 12:56:53 雨水
// 2458913.9560679863 = 2020-03-05 10:56:44 惊蛰
// 2458928.992700611 = 2020-03-20 11:49:29 春分
// 2458944.1514096884 = 2020-04-04 15:38:02 清明
// 2458959.4481605194 = 2020-04-19 22:45:21 谷雨
// 2458974.868931047 = 2020-05-05 08:51:16 立夏
// 2458990.4091356103 = 2020-05-20 21:49:09 小满
// 2459006.04048856 = 2020-06-05 12:58:18 芒种
// 2459021.7385792835 = 2020-06-21 05:43:33 夏至
// 2459037.468285391 = 2020-07-06 23:14:20 小暑
// 2459053.192179222 = 2020-07-22 16:36:44 大暑
// 2459068.879201647 = 2020-08-07 09:06:03 立秋
// 2459084.48944142 = 2020-08-22 23:44:48 处暑
// 2459100.005487287 = 2020-09-07 12:07:54 白露
// 2459115.396199445 = 2020-09-22 21:30:32 秋分
// 2459130.663276956 = 2020-10-08 03:55:07 寒露
// 2459145.791266503 = 2020-10-23 06:59:25 霜降
// 2459160.80123198 = 2020-11-07 07:13:46 立冬
// 2459175.6941854595 = 2020-11-22 04:39:38 小雪
// 2459190.506498529 = 2020-12-07 00:09:21 大雪
// 2459205.251524649 = 2020-12-21 18:02:12 冬至
// 2459219.9745042496 = 2021-01-05 11:23:17 小寒
// 2459234.6942393854 = 2021-01-20 04:39:42 大寒
// 2459249.457398226 = 2021-02-03 22:58:39 立春
// 2459264.280423728 = 2021-02-18 18:43:49 雨水
// 2459279.2038478567 = 2021-03-05 16:53:32 惊蛰
阴历年的推移

获取加(减)几月后(前)的阴历年对象。

  1. .next(years)

    返回阴历年对象。
    years(数字):推移的年数,正数为往后推,负数为往前推。

// v1.2.27
var d = LunarYear.fromYear(2022);// 往后推2年
console.log(d.next(2).toFullString());
// 2024年

LunarUtil 阴历工具

获取阴历某月天数
  1. LunarUtil.getDaysOfMonth(year, month)

    返回天数(数字)。
    year:阴历年(数字)。
    month:阴历月(数字),闰月为负数,如闰二月为-2。v1.2.0及以上版本已删除,可换用LunarYear中的方法。

console.log(LunarUtil.getDaysOfMonth(2016,1));
// 30
获取指定阴历年月的下一月是几月

为什么需要这个方法?因为阴历和阳历不同,阴历会有闰月,比如某年闰4月,那么4月之后,会多出一个4月,所以有需要的时候,可以使用这个方法来获取下个月到底是几月。

  1. LunarUtil.nextMonth(year, month)

    返回月份(数字),闰月为负数。
    year:阴历年(数字)。
    month:阴历月(数字),闰月为负数,如闰二月为-2。v1.2.0及以上版本已删除,可换用LunarYear中的方法。

console.log(LunarUtil.nextMonth(2016,1));
// 2
阴历某年闰几月

获取指定阴历年的的闰月。

为什么需要这个方法?因为阴历和阳历不同,阴历会有闰月,比如某年闰4月,那么4月之后,会多出一个4月,所以有需要的时候,可以使用这个方法来获取指定年份闰几月。v1.2.0及以上版本已删除,可换用LunarYear中的方法。

  1. LunarUtil.getLeapMonth(year)

    返回月份(数字),1代表闰1月,0代表无闰月。
    year:阴历年(数字)。

console.log(LunarUtil.getLeapMonth(2017));
// 6
时辰

时辰为中国传统计时单位。把一昼夜平分为十二段,每段叫做一个时辰,对应12地支,合现在的两小时。

时辰对照表:

子时 丑时 寅时 卯时 辰时 巳时
23:00-00:59 01:00-02:59 03:00-04:59 05:00-06:59 07:00-08:59 09:00-10:59
午时 未时 申时 酉时 戌时 亥时
11:00-12:59 13:00-14:59 15:00-16:59 17:00-18:59 19:00-20:59 21:00-22:59
  1. LunarUtil.convertTime(hm)

    返回时辰(地支),如子。
    hm:HH:mm时刻。

console.log(LunarUtil.convertTime('23:59')+'时');
// 子时

HolidayUtil 法定节假日相关 API

笔记存在的问题或可以完善的内容

  • 数据修正及补充是什么层面的?存到代码文件中的还是内存中的(一次维护还是需要次次调用相关代码更正?)

    • 大概率是内存中,即项目重新运行后需要重新设置一遍

      • (后续可以在 node_modules\lunar-javascript\lunar.js 里搜索 _DATA= 往后追加新的节假日日期实现数据“持久化”,当然 npm 重新装下就没了,显然不行,建议写到初始化代码里做追加

        • // src\main.js
          import { HolidayUtil } from 'lunar-javascript';// 比如是 2021年拉的库,自己按规则把 2022年的节假日处理好了,通过此种方式追加(由于节假日是国家在前一年十一二月公布的,需要手动处理,不能单纯靠代码猜)
          HolidayUtil.fix('202201010120220101202201020120220101202201030120220101202201291020220201202201301020220201202201311120220201202202011120220201202202021120220201202202031120220201202202041120220201202202051120220201202202061120220201202204022020220405202204032120220405202204042120220405202204052120220405202204243020220501202204303120220501202205013120220501202205023120220501202205033120220501202205043120220501202205073020220501202206034120220603202206044120220603202206054120220603202209105120220910202209115120220910202209125120220910202210016120221001202210026120221001202210036120221001202210046120221001202210056120221001202210066120221001202210076120221001202210086020221001202210096020221001');
          
      • 亦或是定期更新 lunar-javascript 包的依赖 npm update lunar-javascript

  • 结合业务场景封装使用(只需要获取到节假日列表,返回结果中需要是什么格式的数据……)

法定假日指国家规定的放假和调休安排,来源于国务院办公厅发布的国办发明电文件。

可前往http://www.gov.cn/zhengce/xxgk/index.htm搜索节假日查看。

一般是每年11月底12月初发布来年的节假日安排。

法定假日包括以下信息:

  1. 当天日期(day):YYYY-MM-DD格式的日期字符串
  2. 是否调休(work):布尔值,调休为true,放假为false
  3. 假期名称(name):字符串,例如国庆节,如果国庆和中秋为同一天,则为国庆中秋。目前包括:元旦节、春节、清明节、劳动节、端午节、中秋节、国庆节、国庆中秋和抗战胜利日,以后有新增再追加。
  4. 关联的节日(target):YYYY-MM-DD格式的日期字符串,例如2020-05-02日放劳动节,它关联的节日为2020-05-01,当放假与节日为同一天时,关联节日也是当天。
var d = HolidayUtil.getHoliday(2020,5,2);
console.log('日期:'+d.getDay());
// 日期:2020-05-02
console.log('是否调休:'+d.isWork());
// 是否调休:false
console.log('假期名称:'+d.getName());
// 假期名称:劳动节
console.log('关联节日:'+d.getTarget());
// 关联节日:2020-05-01

数据修正及补充

由于默认法定节假日数据来源于国务院办公厅发布的通知,一般要年底才发布下一年的节假日安排,所以存在更新及时性的问题,可以在默认节假日数据的基础上,自行修改默认数据,或者追加新的数据。

  1. fix(names, data)

    修正或追加节假日数据

  2. fix(data)

    等同于fix(null, data)

names(字符串数组)用于替换默认的节假日名称列表,当namesnull时,保持默认的节假日名称。

data(字符串)为需要修正或追加的节假日数据,当datanull(go语言传空字符串)时,仅修改默认节假日名称。

每18位表示1天依次排列,格式:当天年月日YYYYMMDD(8位)+节假日名称下标(1位)+调休标识(1位)+节假日当天YYYYMMDD(8位)。

  • 其中节假日名称下标从0开始,超过9的,按ASCII码表依次往后排列;
  • 调休标识0为上班,否则放假。
  • 示例:202005023120200501代表2020-05-02为劳动节放假,对应节假日为2020-05-01。

2022年的修正数据参考(来源于 国务院办公厅关于2022年 部分节假日安排的通知):

202201010120220101202201020120220101202201030120220101202201291020220201202201301020220201202201311120220201202202011120220201202202021120220201202202031120220201202202041120220201202202051120220201202202061120220201202204022020220405202204032120220405202204042120220405202204052120220405202204243020220501202204303120220501202205013120220501202205023120220501202205033120220501202205043120220501202205073020220501202206034120220603202206044120220603202206054120220603202209105120220910202209115120220910202209125120220910202210016120221001202210026120221001202210036120221001202210046120221001202210056120221001202210066120221001202210076120221001202210086020221001202210096020221001

如果需要删除指定节假日,可将节假日名称下标置为~,例如下例数据将删除2010年1月1日的节日数据:

20100101~000000000000000000000000000

由于数据已删除,后续的内容都无意义,所以可直接全部用0替代,但总位数不能少。

节假日名称下标对应ASCII码表如下:

下标 ASCII(名称) 下标 ASCII 下标 ASCII 下标 ASCII 下标 ASCII 下标 ASCII 下标 ASCII 下标 ASCII
0 0(元旦节) 10 : 20 D 30 N 40 X 50 b 60 l 70 v
1 1(春节) 11 ; 21 E 31 O 41 Y 51 c 61 m 71 w
2 2(清明节) 12 < 22 F 32 P 42 Z 52 d 62 n 72 x
3 3(劳动节) 13 = 23 G 33 Q 43 [ 53 e 63 o 73 y
4 4(端午节) 14 > 24 H 34 R 44 \ 54 f 64 p 74 z
5 5(中秋节) 15 ? 25 I 35 S 45 ] 55 g 65 q 75 {
6 6(国庆节) 16 @ 26 J 36 T 46 ^ 56 h 66 r 76 |
7 7(国庆中秋) 17 A 27 K 37 U 47 _ 57 i 67 s 77 }
8 8(抗战胜利日) 18 B 28 L 38 V 48 ` 58 j 68 t 78 ~(删除指定节假日)
9 9 19 C 29 M 39 W 49 a 59 k 69 u

注:红色为默认已使用的节假日。

// 将2020-01-01修改为春节,并追加2099-01-01为元旦节
HolidayUtil.fix('202001011120200101209901010120990101');
console.log(HolidayUtil.getHoliday('2020-01-01'));
console.log(HolidayUtil.getHoliday('2099-01-01'));
// 2020-01-01 春节 2020-01-01
// 2099-01-01 元旦节 2099-01-01// 将元旦节改为元旦
String[] names = HolidayUtil.NAMES;
names[0] = '元旦';
HolidayUtil.fix(names, null);
console.log(HolidayUtil.getHoliday('2099-01-01'));
// 2099-01-01 元旦 2099-01-01

数据处理解析理解代码

  • 看着一长串就头疼,自己写来看看
let days = "202201010120220101202201020120220101202201030120220101202201291020220201202201301020220201202201311120220201202202011120220201202202021120220201202202031120220201202202041120220201202202051120220201202202061120220201202204022020220405202204032120220405202204042120220405202204052120220405202204243020220501202204303120220501202205013120220501202205023120220501202205033120220501202205043120220501202205073020220501202206034120220603202206044120220603202206054120220603202209105120220910202209115120220910202209125120220910202210016120221001202210026120221001202210036120221001202210046120221001202210056120221001202210066120221001202210076120221001202210086020221001202210096020221001"function splitStrBytargetWidth(str, width=18) {var strArr = [];for (let i = 0; i <str.length ; i+=width) {strArr.push(str.slice(i,i+width))}console.log(strArr);
}splitStrBytargetWidth(days, 18)
/*
["202201010120220101","202201020120220101","202201030120220101","202201291020220201","202201301020220201","202201311120220201","202202011120220201","202202021120220201","202202031120220201","202202041120220201","202202051120220201","202202061120220201","202204022020220405","202204032120220405","202204042120220405","202204052120220405","202204243020220501","202204303120220501","202205013120220501","202205023120220501","202205033120220501","202205043120220501","202205073020220501","202206034120220603","202206044120220603","202206054120220603","202209105120220910","202209115120220910","202209125120220910","202210016120221001","202210026120221001","202210036120221001","202210046120221001","202210056120221001","202210066120221001","202210076120221001","202210086020221001","202210096020221001"
]
*/

指定日期是否放假或调休

通过以下方法获取法定假日信息:

  1. getHoliday(year, month, day)

通过指定年、月、日(数字)的方式获取,如果当天不是节假日或调休,返回空

  1. getHoliday(ymd)

通过指定年月日(字符串)的方式获取,ymd格式为YYYY-MM-DD,如果当天不是节假日或调休,返回空

var d = HolidayUtil.getHoliday(2020,5,2);
console.log('日期:'+d.getDay());
// 日期:2020-05-02
console.log('是否调休:'+d.isWork());
// 是否调休:false
console.log('假期名称:'+d.getName());
// 假期名称:劳动节
console.log('关联节日:'+d.getTarget());
// 关联节日:2020-05-01d = HolidayUtil.getHoliday('2011-10-01');
console.log('日期:'+d.getDay());
// 日期:2011-10-01
console.log('是否调休:'+d.isWork());
// 是否调休:false
console.log('假期名称:'+d.getName());
// 假期名称:国庆节
console.log('关联节日:'+d.getTarget());
// 关联节日:2011-10-01

获取指定月份的假期列表

通过以下方法获取:

  1. getHolidays(year, month)

    通过指定年、月(数字)的方式获取

  2. getHolidays(ymd)

    通过指定年月日(字符串)的方式获取,ymd格式为YYYY-MM

var holidays = HolidayUtil.getHolidays(2020,5);
console.log(holidays);
// 2020-05-01 劳动节 2020-05-01,2020-05-02 劳动节 2020-05-01,2020-05-03 劳动节 2020-05-01,2020-05-04 劳动节 2020-05-01,2020-05-05 劳动节 2020-05-01,2020-05-09 劳动节调休 2020-05-01holidays = HolidayUtil.getHolidays('2011-10');
console.log(holidays);
// 2011-10-01 国庆节 2011-10-01,2011-10-02 国庆节 2011-10-01,2011-10-03 国庆节 2011-10-01,2011-10-04 国庆节 2011-10-01,2011-10-05 国庆节 2011-10-01,2011-10-06 国庆节 2011-10-01,2011-10-07 国庆节 2011-10-01,2011-10-08 国庆节调休 2011-10-01,2011-10-09 国庆节调休 2011-10-01

获取指定年份的假期列表

通过以下方法获取:

  1. getHolidays(year)

    通过指定年(数字)的方式获取

  2. getHolidays(ymd)

    通过指定年月日(字符串)的方式获取,ymd格式为YYYY

var holidays = HolidayUtil.getHolidays(2020);
console.log(holidays);
// 2020-01-01 元旦节 2020-01-01,2020-01-19 春节调休 2020-01-25,2020-01-24 春节 2020-01-25,2020-01-25 春节 2020-01-25,2020-01-26 春节 2020-01-25,2020-01-27 春节 2020-01-25,2020-01-28 春节 2020-01-25,2020-01-29 春节 2020-01-25,2020-01-30 春节 2020-01-25,2020-01-31 春节 2020-01-25,2020-02-01 春节 2020-01-25,2020-02-02 春节 2020-01-25,2020-04-04 清明节 2020-04-04,2020-04-05 清明节 2020-04-04,2020-04-06 清明节 2020-04-04,2020-04-26 劳动节调休 2020-05-01,2020-05-01 劳动节 2020-05-01,2020-05-02 劳动节 2020-05-01,2020-05-03 劳动节 2020-05-01,2020-05-04 劳动节 2020-05-01,2020-05-05 劳动节 2020-05-01,2020-05-09 劳动节调休 2020-05-01,2020-06-25 端午节 2020-06-25,2020-06-26 端午节 2020-06-25,2020-06-27 端午节 2020-06-25,2020-06-28 端午节调休 2020-06-25,2020-09-27 国庆中秋调休 2020-10-01,2020-10-01 国庆中秋 2020-10-01,2020-10-02 国庆节 2020-10-01,2020-10-03 国庆节 2020-10-01,2020-10-04 国庆节 2020-10-01,2020-10-05 国庆节 2020-10-01,2020-10-06 国庆节 2020-10-01,2020-10-07 国庆节 2020-10-01,2020-10-08 国庆节 2020-10-01,2020-10-10 国庆节调休 2020-10-01holidays = HolidayUtil.getHolidays('2011');
console.log(holidays);
// 2011-01-01 元旦节 2011-01-01,2011-01-02 元旦节 2011-01-01,2011-01-03 元旦节 2011-01-01,2011-01-30 春节调休 2011-02-03,2011-02-02 春节 2011-02-03,2011-02-03 春节 2011-02-03,2011-02-04 春节 2011-02-03,2011-02-05 春节 2011-02-03,2011-02-06 春节 2011-02-03,2011-02-07 春节 2011-02-03,2011-02-08 春节 2011-02-03,2011-02-12 春节调休 2011-02-03,2011-04-02 清明节调休 2011-04-05,2011-04-03 清明节 2011-04-05,2011-04-04 清明节 2011-04-05,2011-04-05 清明节 2011-04-05,2011-04-30 劳动节 2011-05-01,2011-05-01 劳动节 2011-05-01,2011-05-02 劳动节 2011-05-01,2011-06-04 端午节 2011-06-06,2011-06-05 端午节 2011-06-06,2011-06-06 端午节 2011-06-06,2011-09-10 中秋节 2011-09-12,2011-09-11 中秋节 2011-09-12,2011-09-12 中秋节 2011-09-12,2011-10-01 国庆节 2011-10-01,2011-10-02 国庆节 2011-10-01,2011-10-03 国庆节 2011-10-01,2011-10-04 国庆节 2011-10-01,2011-10-05 国庆节 2011-10-01,2011-10-06 国庆节 2011-10-01,2011-10-07 国庆节 2011-10-01,2011-10-08 国庆节调休 2011-10-01,2011-10-09 国庆节调休 2011-10-01,2011-12-31 元旦节调休 2012-01-01

获取节日相关的假期列表

通过以下方法获取:

  1. getHolidaysByTarget(year, month, day)

    通过指定年、月、日(数字)的方式获取

  2. getHolidaysByTarget(ymd)

    通过指定年月日(字符串)的方式获取,ymd格式为YYYY-MM-DD

var holidays = HolidayUtil.getHolidaysByTarget(2018,5,1);
console.log(holidays);
// 2018-04-28 劳动节调休 2018-05-01,2018-04-29 劳动节 2018-05-01,2018-04-30 劳动节 2018-05-01,2018-05-01 劳动节 2018-05-01holidays = HolidayUtil.getHolidaysByTarget('2011-01-01');
console.log(holidays);
// 2011-01-01 元旦节 2011-01-01,2011-01-02 元旦节 2011-01-01,2011-01-03 元旦节 2011-01-01

lunar.js 基本使用学习笔记相关推荐

  1. 【前端】-【node.js基础】-学习笔记

    [前端]-[node.js]-学习笔记 1 node.js介绍 1.1 node.js优点 1.2 node.js 不足之处 1.3 nodejs与java的区别 2. node中函数 3. 浏览器和 ...

  2. JS高级——模块化学习笔记

    一.什么是模块化? 到底什么是模块化.模块化开发呢? 事实上模块化开发最终的目的是将程序划分成一个个小的结构: 这个结构中编写属于自己的逻辑代码,有自己的作用域,不会影响到其他的结构: 这个结构可以将 ...

  3. JS简单入门学习笔记一

    JS的HelloWorld 在页面中输出一个内容 document.write(); 向控制台输出一个内容 console.log(); /**1.JS中严格区分大小写*2.JS中每一条语句以分号结尾 ...

  4. 【Vue.js】Vue 学习笔记

    概念: 渐进式框架: "渐进式框架的大概意思就是你可以只用我的一部分,而不是用了我这一点就必须用我的所有部分." "大概就是你不必一开始就用Vue所有的全家桶,根据场景, ...

  5. Vue.js入门(学习笔记)

    说在前头: 本人为大三在读学生,书写文章的目的是为了对自己掌握的知识和技术进行一定的记录,同时乐于与大家一起分享,因本人资历尚浅,发布的文章难免存在一些错漏之处,还请阅读此文章的大牛们见谅与斧正.若在 ...

  6. [HTML CSS JS ES6 JS WebAPI JQuery]学习笔记目录

    文章目录 前言 HTML HTML 知识整理与补充 CSS CSS 知识整理与补充 JS ES6 JS Web API JQuery JS 知识整理与补充 前言 根据视频和PPT整理 视频及对应资料: ...

  7. js hoisting -- 提升 学习笔记

    昨天碰到小伙伴在问js函数提升的问题,虽然知道一点,但感觉自己说不清楚,于是搜了一下,找到一篇说的比较明白的翻译,参考地址如下: http://www.cnblogs.com/betarabbit/a ...

  8. js性能优化--学习笔记

    <高性能网站建设进阶指南>: 1.使用局部变量,避免深入作用域查找,局部变量是读写速度最快的:把函数中使用次数超过一次的对象属性和数组存储为局部变量是一个好方法:比如for循环中的.len ...

  9. js基础教程学习笔记

    document.write(); document.getElementById(); <script type="text/javascript"></scr ...

最新文章

  1. 《高阶Perl》——导读
  2. Keras之MLP:利用MLP【Input(8)→(12)(relu)→O(sigmoid+二元交叉)】模型实现预测新数据(利用糖尿病数据集的八个特征实现二分类预测
  3. 全球及中国氮肥产业营销趋势与十四五消费规模研究报告2022版
  4. iOS: 讯飞语音的使用
  5. Nacos源码BeatReactor
  6. JAVA多线程之先行发生原则
  7. 小程序云开发搜索功能的实现正则_码code | 如何借助小程序云开发实现小程序支付功能...
  8. Oracle——集合运算
  9. 一个比较好的多人网络游戏菜单程序。
  10. DBA日常管理——数据归档(Archiving-Data)
  11. 《信号与系统学习笔记》—信号与系统(四)
  12. 2011戴尔计算机配置,机型与配置(一)
  13. VPS部署以及域名设置和DNS解析
  14. Amazon SageMaker助力德比软件提高酒店房态查询准确率
  15. python自动办公 pdf_别再问如何用 Python 提取 PDF 内容了!
  16. 写一个块linux设备驱动
  17. Nginx入门基础篇
  18. App中根据多个字段检索功能总结
  19. 代码随想录贪心算法——买卖股票的最佳时机含手续费
  20. 如何系统学游戏建模?游戏建模必备知识,值得收藏

热门文章

  1. fastJson String转Map
  2. office 安装失败的解决办法
  3. OpenCV色彩识别
  4. vscode PHP 断点调试
  5. 解决IPad和IPhone接收exchange邮件…
  6. javaScript 时间 向上取整
  7. jsoup微信公众号文章标题、发布时间、作者、封面图片的爬取
  8. java code formatter,Eclipse Code Formatter在IDEA中配置
  9. linux添加删除软连接方式
  10. poj1258 - Agri-Net