GithubHelp home page GithubHelp logo

zzyss86 / lunarcalendar Goto Github PK

View Code? Open in Web Editor NEW
680.0 41.0 189.0 339 KB

农历(阴历)万年历,是一款支持Node.js和浏览器端使用的全功能农历和公历日历类库。支持农历与公历之间相互转换,含有二十四节气,天干地支纪年纪月纪日,生肖属相,公历节假日及农历传统节假日信息等功能。自带2013-2014节假日安排数据,并可自行配置。带有黄历数据,可自行选择配置。支持1891-2100年。

JavaScript 100.00%

lunarcalendar's Introduction

#LunarCalendar#

农历(阴历)万年历,是一款支持Node.js和浏览器端使用的全功能农历和公历日历类库。支持农历与公历之间相互转换,含有二十四节气,天干地支纪年纪月纪日,生肖属相,公历节假日及农历传统节假日信息等功能。自带2013-2014节假日安排数据,并可自行配置。带有黄历数据,可自行选择配置。支持1891-2100年。使用LunarCalendar可快速开发一款属于自己的万年历产品,行动起来吧!

##Install##

  1. Node.js服务器端(使用npm安装): npm install lunar-calendar
  2. 浏览器端使用,引用脚本: <script type="text/javascript" src="lib/LunarCalendar.min.js"></script>

##Usage## ###Node.js### var LunarCalendar = require("lunar-calendar");

###浏览器### window.LunarCalendar是一个全局对象,可以全局作用域直接调用。

##DEMO产品:小推万年历(手机版)## 访问方式:(手机扫描二维码)

二维码

小推万年历截图

##方法列表## ###LunarCalendar.calendar(year,month[,fill])### 通过公历获取某月农历数据

####参数说明####

  • @param {Number} year 公历年 范围[1891-2100]
  • @param {Number} month 公历月 范围[1-12]
  • @param {Boolean} fill(可选) 是否填充当月日历首尾日期,设为true时,会在首尾填入上下月数据,自动补全一个7*6阵列数据。(可更美观的打造你的万年历产品)

####返回数据#### { "firstDay": 5, //该月1号星期几(日历开始位置) "monthDays": 28, //该月天数 "monthData": [ //本月所有日历数据 { "year": 2014, //公历年 "month": 2, //公历月 "day": 1, //公历日 "zodiac": "蛇", //生肖属相 "GanZhiYear": "癸巳", //干支纪年 "GanZhiMonth": "乙丑", //干支纪月 "GanZhiDay": "癸卯", //干支纪日 "worktime": 2, //0无特殊安排,1工作,2放假 "lunarYear": 2014, //农历年 "lunarMonth": 1, //农历月(1-13,有闰月情况,比如当前闰9月,10表示闰9月,11表示10月) "lunarDay": 2, //农历日 "lunarMonthName": "正月", //农历月中文名 "lunarDayName": "初二", //农历日中文名 "lunarLeapMonth": 9, //农历闰月所在月份,0表示无闰月 "solarFestival": "", //公历节假日,undefined或‘劳动节’之类 "lunarFestival": "", //农历节假日,undefined或‘除夕’之类 "term": "" //二十四节气名,undefined或‘立春’之类 }, ... ] }

###LunarCalendar.solarCalendar(year,month[,fill])### 获取公历某月日历数据(不带农历信息)

####参数说明####

  • @param {Number} year 公历年 范围[1-~]公元后
  • @param {Number} month 公历月 范围[1-12]
  • @param {Boolean} fill(可选) 是否填充当月日历首尾日期,设为true时,会在首尾填入上下月数据,自动补全一个7*6阵列数据。(可更美观的打造你的万年历产品)

####返回数据#### { "firstDay": 5, //该月1号星期几(日历开始位置) "monthDays": 28, //该月天数 "monthData": [ //本月所有日历数据 { "year": 2014, //公历年 "month": 2, //公历月 "day": 1 //公历日 }, ... ] }

###LunarCalendar.solarToLunar(year,month,day)### 将公历转换为农历

####参数说明####

  • @param {Number} year 公历年 范围[1891-2100]
  • @param {Number} month 公历月 范围[1-12]
  • @param {Number} day 公历日 范围[1-31]

####返回数据#### { "zodiac": "蛇", //生肖属相 "GanZhiYear": "癸巳", //干支纪年 "GanZhiMonth": "乙丑", //干支纪月 "GanZhiDay": "癸卯", //干支纪日 "worktime": 2, //0无特殊安排,1工作,2放假 "lunarYear": 2014, //农历年 "lunarMonth": 1, //农历月(1-13,有闰月情况,比如当前闰9月,10表示闰9月,11表示10月) "lunarDay": 2, //农历日 "lunarMonthName": "正月", //农历月中文名 "lunarDayName": "初二", //农历日中文名 "lunarLeapMonth": 9, //农历闰月所在月份,0表示无闰月 "solarFestival": "", //公历节假日,undefined或‘劳动节’之类 "lunarFestival": "", //农历节假日,undefined或‘除夕’之类 "term": "" //二十四节气名,undefined或‘立春’之类 }

###LunarCalendar.lunarToSolar(year,month,day)### 将农历转换为公历

####参数说明####

  • @param {Number} year 农历年 范围[1891-2100]
  • @param {Number} month 农历月 范围[1-13](有闰月情况,比如当前闰9月,10表示闰9月,11表示10月)
  • @param {Number} day 农历日 范围[1-30]

####返回数据#### { "year": 2014, //公历年 "month": 1, //公历月 "day": 31 //公历日 }

###LunarCalendar.setWorktime(data)### 设置某年的节假日安排信息(类库已内置2013-2014年的数据)

####参数说明####

  • @param {Object} data 节假日安排信息(以年为key,可设置多年)
  • 0:无特殊安排,1:工作,2:放假

参数data格式如下:

{
    "y2014": {
        "d0101": 2,
        "d0126": 1,
        "d0131": 2,
        "d0201": 2,
        "d0202": 2,
        "d0203": 2,
        "d0204": 2,
        "d0205": 2,
        "d0206": 2,
        "d0208": 1,
        "d0405": 2,
        "d0407": 2,
        "d0501": 2,
        "d0502": 2,
        "d0503": 2,
        "d0504": 1,
        "d0602": 2,
        "d0908": 2,
        "d0928": 1,
        "d1001": 2,
        "d1002": 2,
        "d1003": 2,
        "d1004": 2,
        "d1005": 2,
        "d1006": 2,
        "d1007": 2,
        "d1011": 1
    }
}

##黄历数据## 在目录/hl/下有2008-2020年的黄历数据,用户可自行选择在自己万年历中进行添加。

##公用服务器API## 用Node.js搭载lunar-calendar类库。

  • API:http://api.tuijs.com/
  • 请求类型:GET
  • 返回数据:JSON 或 JSONP
  • JSONP:支持,添加参数callback(仅支持数字,字母,下划线)

###API列表###

例如:

http://api.tuijs.com/lunarToSolar?year=2011&month=1&day=1&callback=fn

返回: fn({"year":2011,"month":2,"day":16})

##其它##

JasonZhou

lunarcalendar's People

Contributors

0312birdzhang avatar deepraining avatar zzyss86 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  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

lunarcalendar's Issues

中秋节取阳历日期有误

solar = lunarCalendar.lunarToSolar( 2017, 8, 15 );

return : { year: 2017, month: 9, day: 5 }

2017的中秋节是阳历是10.4
但log出2017年10分所有天数时,4日的lunarFestival是中秋节,
lunarCalendar:v0.1.4
node:v6.2.0
os:win10 x64

建議:二十四節氣名 undefined 最好能顯示爲:二十四節氣名+n天

###LunarCalendar.solarToLunar(year,month,day)### 將公曆轉換為農曆

####參數說明####

@param {Number} year 公曆年 範圍[1891-2100]
@param {Number} month 公曆月 範圍[1-12]
@param {Number} day 公曆日 範圍[1-31]

####返回數據#### { "zodiac": "蛇", //生肖屬相 "GanZhiYear": "癸巳", //干支紀年 "GanZhiMonth": "乙丑", //干支紀月 "GanZhiDay": "癸卯", //干支紀日 "worktime": 2, //0無特殊安排,1工作,2放假 "lunarYear": 2014, //農曆年 "lunarMonth": 1, //農曆月(1-13,有閏月情況,比如當前閏9月,10表示閏9月,11表示10月) "lunarDay": 2, //農曆日 "lunarMonthName": "正月", //農曆月中文名 "lunarDayName": "初二", //農曆日中文名 "lunarLeapMonth": 9, //農曆閏月所在月份,0表示無閏月 "solarFestival": "", //公曆節假日,undefined或『勞動節』之類 "lunarFestival": "", //農曆節假日,undefined或『除夕』之類 "term": "" //二十四節氣名,undefined或『立春』之類 }

节气不对

2015年1月6号才是小寒,可这里显示的却是5号是小寒。大寒的日期倒是正确的。

lunarCalendar.lunarToSolar方法沒有檢查月和日的最大值

Node v0.12.7
Type .help for more information
nesh> .require lunar-calendar
lunarCalendar = require("lunar-calendar")
nesh> lunarCalendar.lunarToSolar(2015, 6, 29)
{ year: 2015, month: 8, day: 13 }
nesh> lunarCalendar.lunarToSolar(2015, 100, 100)
{ year: 2016, month: 5, day: 17 }
nesh> lunarCalendar.lunarToSolar(2100, 100, 100)
{ year: 2101, month: 5, day: 8 }
nesh> lunarCalendar.lunarToSolar(2100, 100, 100)
nesh> lunarCalendar.lunarToSolar(2015, Number.MAX_SAFE_INTEGER, Number.MAX_SAFE_INTEGER)
{ year: NaN, month: NaN, day: NaN }
nesh> 

你懂得

在含有夏令时的时区中getDaysBetweenSolar计算错误

如果在含有夏令时的时区中,用new Date(year, month, day)默认会返回不同时区下的时间,计算getDaysBetweenSolar时不是一个整数:

> d1 = new Date(2015, 1, 19)
Thu Feb 19 2015 00:00:00 GMT-0600 (CST)
> d2 = new Date(2015, 3, 6)
Mon Apr 06 2015 00:00:00 GMT-0500 (CDT)
> d2-d1
3970800000
> (d2-d1)/86400000
45.958333333333336

一种解决方法是直接用Date.UTC(year, month, day)来计算UTC时区下的timestamp:

> d1 = Date.UTC(2015, 1, 19)
1424304000000
> d2 = Date.UTC(2015, 3, 6)
1428278400000
> (d2-d1)/86400000
46

相应的getDaysBetweenSolar函数改为:

    function getDaysBetweenSolar(year,month,day,year1,month1,day1){
        var date = Date.UTC(year,month,day);
        var date1 = Date.UTC(year1,month1,day1);
        return (date1-date) / 86400000;
    };

Vietname Translate

Hello, How can i translate to vietname language. and i want to make simple calendar.

像母亲节这种节日能否加入

像母亲节这种节日能否加入?不是单纯的日期,而是以第几个星期日这样的,在现有算法下,如何加入比较合适

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.