var LunarDate = { madd: new Array(0, 31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334), HsString: '甲乙丙丁戊己庚辛壬癸', EbString: '子丑寅卯辰巳午未申酉戌亥', NumString: "一二三四五六七八九十", MonString: "正二三四五六七八九十冬腊", CalendarData: new Array(0xA4B, 0x5164B, 0x6A5, 0x6D4, 0x415B5, 0x2B6, 0x957, 0x2092F, 0x497, 0x60C96, 0xD4A, 0xEA5, 0x50DA9, 0x5AD, 0x2B6, 0x3126E, 0x92E, 0x7192D, 0xC95, 0xD4A, 0x61B4A, 0xB55, 0x56A, 0x4155B, 0x25D, 0x92D, 0x2192B, 0xA95, 0x71695, 0x6CA, 0xB55, 0x50AB5, 0x4DA, 0xA5B, 0x30A57, 0x52B, 0x8152A, 0xE95, 0x6AA, 0x615AA, 0xAB5, 0x4B6, 0x414AE, 0xA57, 0x526, 0x31D26, 0xD95, 0x70B55, 0x56A, 0x96D, 0x5095D, 0x4AD, 0xA4D, 0x41A4D, 0xD25, 0x81AA5, 0xB54, 0xB6A, 0x612DA, 0x95B, 0x49B, 0x41497, 0xA4B, 0xA164B, 0x6A5, 0x6D4, 0x615B4, 0xAB6, 0x957, 0x5092F, 0x497, 0x64B, 0x30D4A, 0xEA5, 0x80D65, 0x5AC, 0xAB6, 0x5126D, 0x92E, 0xC96, 0x41A95, 0xD4A, 0xDA5, 0x20B55, 0x56A, 0x7155B, 0x25D, 0x92D, 0x5192B, 0xA95, 0xB4A, 0x416AA, 0xAD5, 0x90AB5, 0x4BA, 0xA5B, 0x60A57, 0x52B, 0xA93, 0x40E95), Year: null, Month: null, Day: null, TheDate: null, GetBit: function(m, n){ return (m >> n) & 1; }, e2c: function(){ this.TheDate = (arguments.length != 3) ? new Date(): new Date(arguments[0], arguments[1], arguments[2]); var total, m, n, k; var isEnd = false; var tmp = this.TheDate.getFullYear(); total = (tmp - 1921) * 365 + Math.floor((tmp - 1921) / 4) + this.madd[this.TheDate.getMonth()] + this.TheDate.getDate() - 38; if (this.TheDate.getYear() % 4 == 0 && this.TheDate.getMonth() > 1) { total++; } for (m = 0; ; m++) { k = (this.CalendarData[m] < 0xfff) ? 11: 12; for (n = k; n >= 0; n--) { if (total <= 29 + this.GetBit(this.CalendarData[m], n)) { isEnd = true; break; } total = total - 29 - this.GetBit(this.CalendarData[m], n); } if (isEnd) break; } this.Year = 1921 + m; this.Month = k - n + 1; this.Day = total; if (k == 12) { if (this.Month == Math.floor(this.CalendarData[m] / 0x10000) + 1) { this.Month = 1 - this.Month; } if (this.Month > Math.floor(this.CalendarData[m] / 0x10000) + 1) { this.Month--; } } }, GetcDateString: function(){ var tmp = ""; tmp += this.HsString.charAt((this.Year - 4) % 10); tmp += this.EbString.charAt((this.Year - 4) % 12); tmp += "年 "; if (this.Month < 1) { tmp += "(闰)"; tmp += this.MonString.charAt(-this.Month - 1); } else { tmp += this.MonString.charAt(this.Month - 1); } tmp += "月"; tmp += (this.Day < 11) ? "初": ((this.Day < 20) ? "十": ((this.Day < 30) ? "廿": "三十")); if (this.Day % 10 != 0 || this.Day == 10) { tmp += this.NumString.charAt((this.Day - 1) % 10); } return tmp; }, GetLunarDay: function(solarYear, solarMonth, solarDay) { if (solarYear < 1921 || solarYear > 2020) { return ""; } else { solarMonth = (parseInt(solarMonth) > 0) ? (solarMonth - 1): 11; this.e2c(solarYear, solarMonth, solarDay); return this.GetcDateString(); } } };
调用方法:
window.onload = function(){ document.write('2014-04-01 农历'+LunarDate.GetLunarDay(2014, 4, 1)); };
输出:
2014-04-01 农历甲午年 三月初二
相关推荐
公历(阳历) 农历(阴历)转换,支持时间段从 1900-2100 如果需要更长的时间段,利用 generate.htm 生成的数据即可。 支持各种编程语言 C#,java,Objective-C,php,Python,javascript(nodejs),C/C++,ruby,swift,golang 等...
调用简单,下拉传一日期加类型即可转换日期的类型,如: CalConvert(new Date(2010,3,19), false) //农历转换为公历 CalConvert(new Date(2010,3,19), true)//公历转换成农历
2. **农历算法**:农历,也称为阴历,是一种根据月亮的相位来计算日期的系统,与公历(阳历)主要依据太阳运行周期不同。农历算法比较复杂,涉及到月相、闰月和节气等因素。公历到农历的转换通常包括以下几个步骤:...
在JavaScript中,公历与农历的转换是一项常见的需求,尤其在中国文化背景下,农历在很多节日和传统活动中扮演着重要角色。下面将详细讲解如何利用JavaScript实现公历与农历的转换。 首先,我们需要了解公历与农历的...
首先,`calendar.js`可能是实现农历转换的核心代码文件,它可能包含了从公历到农历的转换算法。这些算法通常基于一系列的公式和表,如“润月规则”和“节气计算”。在JavaScript中,我们可以创建函数来处理这些计算...
为解决Web前端的农历转换,现将相关的前端转换代码共享给大家,JavaScript公历转换、农历转换、阴历转换、阳历转换
日历、公历(阳历)、农历(阴历、老黄历)、佛历lunar-javascript-master.zip
在IT领域,日期和时间的处理是至关重要的部分,尤其在中国,我们经常需要在公历(阳历)和农历(阴历)之间进行转换。公历是国际通用的日历系统,而农历则更加符合中国的传统习俗,如节日、节气等。本主题将深入探讨...
首先,阳历,也称为公历,是我们日常生活中广泛使用的日期系统,基于格里高利历。它以地球绕太阳公转一周的时间为基础,每年大约365.24天,分为12个月份,平年有365天,闰年则有366天。 阴历,又称农历或华历,是...
这个“公历农历对照表”文件恰好提供了这样的功能,它可以帮助开发者便捷地进行公历与农历之间的转换,提升应用的用户体验。下面我们将深入探讨这个主题。 首先,了解公历和农历的基本概念是必要的。公历,也称为...
2. **中国公历农历算法**: 中国公历算法涉及了中国传统的节气和节假日,而农历算法则需要考虑到复杂的闰月规则。文档详细解析了如何通过天文数据和历史记录来构建这些算法,确保转换的准确性和本土化。 3. **中国...
2. **农历转换算法**:要将公历日期转换为农历日期,需要一套转换算法。常见的农历转换算法有蔡勒(Zeller)公式、陈永洲算法等。`showDateWithChinesecalendar.js`文件可能包含这样的算法,通过分析和理解代码,可以...
公历(阳历)农历(阴历)转换,支持时间段从1900-2100如果需要更长的时间段,利用generate.htm生成的数据即可。支持各种编程语言C#,java,Objective-C,php,Python,javascript(nodejs),C / C ++,ruby,...
农历,又称阴历或旧历,是一种阴阳历,依据月球绕地球运行周期(朔望月)为基础的历法,月相朔望月为一月,大月30日,小月29日。而公历,也称格里历或阳历,是一种太阳历,以地球绕太阳公转周期为基础,平年365天,...
这个文件名没有明确的文件类型信息,但考虑到上下文,可能是某种编码后的数据文件或代码文件,可能包含了国历与农历转换的算法或数据。具体解读需要知道文件的编码方式和格式。 综上所述,理解和实现国历与农历的...
在日常生活中,农历(阴历)与公历(阳历)之间的转换对于节日庆祝、传统活动等有着重要的意义。例如,春节、中秋节等中国传统节日都是根据农历来确定日期的。因此,开发一个能够准确进行日期转换的功能是非常必要的...
实现农历阳历日期选择器的核心技术主要包括以下几个方面: 1. **日期库**:在编程中,我们需要依赖日期处理库,如JavaScript的`moment.js`或`date-fns`,它们通常不直接支持农历,因此可能需要额外的插件或库,如`...
《农历公历日历控件》是一款实用的前端开发组件,专为网页应用程序设计,能够帮助用户在公历和农历之间自由切换,选择所需的日期。该控件具有良好的兼容性,支持包括老旧版本的IE6和IE7在内的多种浏览器,同时在Fire...
原生JavaScript实现的农历日历是一种实用的前端技术,它允许开发者在网页上展示符合中国传统农历日期的日历组件。在不依赖外部库或框架的情况下,使用JavaScript直接编写这样的功能,可以提升网页的加载速度和性能。...
标题中的“日历带农历的控件”指的是一个支持显示公历和农历的JavaScript组件,通常用于网页应用中,帮助用户进行日期相关的操作和展示。这样的控件在各种需要日期管理的场合非常实用,比如在线日程规划、事件预订...