Code Monkey home page Code Monkey logo

solarlunar's Introduction

solarLunar

NPM version build status Test Coverage Dependency Status devDependency Status NPM downloads

1900 年至 2100 年公历、农历互转

  • Solar : 公历 阳历
  • Lunar : 农历 阴历

支持年份:1900-2100

用法:

import solarLunar from 'solarLunar';

const solar2lunarData = solarLunar.solar2lunar(2015, 10, 8); // 输入的日子为公历
const lunar2solarData = solarLunar.lunar2solar(2015, 8, 26); // 输入的日子为农历

output:

{
    lYear: 2015,
    lMonth: 8,
    lDay: 26,
    animal: '羊',
    monthCn: '八月',
    dayCn: '廿六',
    cYear: 2015,
    cMonth: 10,
    cDay: 8,
    gzYear: '乙未',
    gzMonth: '丙戌',
    gzDay: '丁巳',
    isToday: false,
    isLeap: false,
    nWeek: 4,
    ncWeek: '星期四',
    isTerm: true,
    term: '寒露'
}

API

  • (Object)solarLunar.solar2lunar : 输入的日子为公历年月日

    • 参数 : (Number)年,(Number)月,(Number)日
solarLunar.solar2lunar(2015, 10, 8);
solarLunar.solar2lunar(2015, 10, 08); // 等价于上者
  • (Object)solarLunar.lunar2solar : 输入的日子为农历年月日

    • 参数 : (Number)年,(Number)月,(Number)日,(bool)是否闰月
solarLunar.lunar2solar(2015, 8, 26);
solarLunar.lunar2solar(2015, 08, 26); // 等价于上者
solarLunar.lunar2solar(2015, 8, 26, true);  // 闰月
  • (Array)solarLunar.lunarInfo : 农历 1900-2100 的润大小信息表

  • (Array)solarLunar.solarMonth : 公历每个月份的天数普通表

  • (Array)solarLunar.gan : 天干地支之天干速查表 - 干 ["甲","乙","丙","丁","戊","己","庚","辛","壬","癸"]

  • (Array)solarLunar.zhi : 天干地支之地支速查表 - 支 ["子","丑","寅","卯","辰","巳","午","未","申","酉","戌","亥"]

  • (Array)solarLunar.animals : 生肖表 ["鼠","牛","虎","兔","龙","蛇","马","羊","猴","鸡","狗","猪"]

  • (Array)solarLunar.lunarTerm : 24 节气速查表 ["小寒","大寒","立春","雨水","惊蛰","春分","清明","谷雨","立夏","小满","芒种","夏至","小暑","大暑","立秋","处暑","白露","秋分","寒露","霜降","立冬","小雪","大雪","冬至"]

  • (Array)solarLunar.lTermInfo : 1900-2100 各年的 24 节气日期速查表

  • (Array)nStr1 : 数字转中文速查表 ['日','一','二','三','四','五','六','七','八','九','十']

  • (Array)nStr2 : 日期转农历称呼速查表 ['初','十','廿','卅']

  • (Array)nStr3 : 月份转农历称呼速查表 ['正','一','二','三','四','五','六','七','八','九','十','冬','腊']

  • (Number)lYearDays : 返回农历 y 年一整年的总天数

    const count = solarLunar.lYearDays(1987); //count=387
  • (Number(0-12))leapMonth : 返回农历 y 年闰月是哪个月;若 y 年没有闰月 则返回 0

    const leapMonth = solarLunar.leapMonth(1987); //leapMonth=6
  • (Number(0|29|30))leapDays : 返回农历 y 年闰月的天数 若该年没有闰月则返回 0

    const leapMonthDay = solarLunar.leapDays(1987); //leapMonthDay=29
  • (Number(-1|29|30))monthDays : 返回农历 y 年 m 月(非闰月)的总天数,计算 m 为闰月时的天数请使用 leapDays 方法

    const MonthDay = solarLunar.monthDays(1987, 9); //MonthDay=29
  • (Number (-1、28、29、30、31))solarDays : 返回公历(!)y 年 m 月的天数

    const solarMonthDay = solarLunar.leapDays(1987); //solarMonthDay=30
  • (Number)toGanZhi : 传入 offset 偏移量返回干支

  • (Number)toGanZhi : 传入公历(!)y 年获得该年第 n 个节气的公历日期

    • 第一个参数为公历年(1900-2100);

    • 第二个参数为二十四节气中的第几个节气(1~24);从 n=1(小寒)算起

      const _24 = solarLunar.getTerm(1987, 3); //_24=4;意即1987年2月4日立春
  • (String)toChinaMonth : 传入农历数字月份返回汉语通俗表示法

    const cnMonth = solarLunar.toChinaMonth(12); //cnMonth='腊月'
  • (String)toChinaDay : 传入农历日期数字返回汉字表示法

    const cnDay = solarLunar.toChinaDay(21); //cnMonth='廿一'
  • (String)getAnimal : 年份转生肖[!仅能大致转换] => 精确划分生肖分界线是“立春”

    const animal = solarLunar.getAnimal(1987); //animal='兔'

返回值

  • (Number)lYear : 农历年
  • (Number)lMonth : 农历月
  • (Number)lDay : 农历日
  • (String)monthCn : 农历月中文名称,如果为闰月,则会在月份前增加
  • (String)dayCn : 农历日中文名称
  • (String)animal : 生肖
  • (String)gzYear : 年的农历叫法(干支)
  • (String)gzMonth : 月的农历叫法(干支)
  • (String)gzDay : 日的农历叫法(干支)
  • (Number)cYear : 公历年
  • (Number)cMonth : 公历月
  • (Number)cDay : 公历日
  • (Number)nWeek : 周几
  • (String)ncWeek : 中文周几
  • (Boolean)isLeap : 是否是闰月
  • (Boolean)isToday : 是否是今天
  • (Boolean)isTerm : 是否有节气
  • (String)term : 节气,如果没有则返回空字符串

Links

solarlunar's People

Contributors

alvinthedeveloper avatar flytrap avatar leplay avatar nxgreen avatar thaddeusjiang avatar yize avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

solarlunar's Issues

数据源有错

solarlunar/const/lunarInfo.js
本来上午只发现了96年的一个月份有错,提交后,最后找到了一份 百度万年历的数据源
https://www.baidu.com/cache/aladdin/ui/lunar7/lunar7.js?v=20170208
对比发现下三个有问题,并参照 香港天文台 数据源对比后,都已修改正确。

// 农历 1996 年 0x055c0 => 0x05ac0
香港天文台 数据源:http://www.weather.gov.hk/gts/time/calendar/text/T1996c.txt
原:0x055c0 => ‭0101 0101 1100 0000‬ 五六七八月存在问题
改:0x05ac0 => ‭0101 1010 1100 0000‬

// 农历 2060 年 0x0a2e0 => 0x092e0
香港天文台 数据源:http://www.weather.gov.hk/gts/time/calendar/text/T2060c.txt
原:0x0a2e0 => ‭1010 0010 1110 0000‬ 四月
改:0x092e0 => ‭1001 0010 1110 0000‬

// 农历 2097 年 0x0a2d0 => 0x0a4d0
香港天文台 数据源:http://www.weather.gov.hk/gts/time/calendar/text/T2098c.txt
原:0x0a2d0 => ‭1010 0010 1110 0000‬ 十一十二月
改:0x0a4d0 => 1010 0010 1101 0000

农历闰月怎么转公历

(Object)solarLunar.lunar2solar : 输入的日子为农历年月日
参数 : (Number)年,(Number)月,(Number)日

似乎没有传递是否闰月的参数

Wrong gzYear for 2020

console.log(solarLunar.solar2lunar(2020, 1, 25));

{ lYear: 2020,
  lDay: 1,
  animal: '鼠',
  yearCn: '二零二零年',
  monthCn: '正月',
  dayCn: '初一',
  cYear: 2020,
  cMonth: 1,
  cDay: 25,
  gzYear: '己亥',
  gzMonth: '丁丑',
  gzDay: '丁卯',
  isToday: false,
  isLeap: false,
  nWeek: 6,
  ncWeek: '星期六',
  isTerm: false,
  term: '' }

gzYear: '己亥', should be 庚子

2017年的数据源可能有误

image
2017年12月14号转换后的结果是闰十月,不过查了一下好像最近一次闰十月是在1984年,下一次会在2166年。看了下这块的代码leapMonth函数应该没有问题,测试了下1984年的闰十月也可以正常得到判断。
对阴阳历转换不太懂,但是感觉数据源的2017年可能会有点问题,希望能够帮忙看下

import 语句在 mac osx 上可能出错

报错:
./src/utils/dateTime.js
Module not found: /Volumes/work/meteor-h5/h5-react/node_modules/solarLunar/lib/solarlunar.min.js does not match the corresponding path on disk solarlunar.

import solarLunar from 'solarLunar' 应该是系统大小写敏感的问题 改成 from 'solarlunar' 就可以了

lunar2solar -1

const d = new Date()
const date = solarlunar.lunar2solar(d.getFullYear(), d.getMonth() + 1, d.getDate())
console.log('date', date)
// data -> -1 ???
// 11月份正常
// 12月份-1???

日期显示有错

solarLunar.solar2lunar方法得到星期天显示文字是星期零

image

关于 getTerm

const _24 = solarLunar.getTerm(1987, 3); //_24=4;意即1987年2月4日立春

结果为 4 我怎么知道他是二月份呢?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.