`

JS农历插件

 
阅读更多

旧项目的农历插件, 来源未知...

$.fn.lunarDate = $.lunarDate = function() {
	
	var sWeek = new Array("星期日", "星期一", "星期二", "星期三", "星期四", "星期五", "星期六");
	var dNow = new Date();
	var CalendarData = new Array(100);
	var madd = new Array(12);
	var tgString = "甲乙丙丁戊己庚辛壬癸";
	var dzString = "子丑寅卯辰巳午未申酉戌亥";
	var numString = "一二三四五六七八九十";
	var monString = "正二三四五六七八九十冬腊";
	var weekString = "日一二三四五六";
	var sx = "鼠牛虎兔龙蛇马羊猴鸡狗猪";
	var cYear, cMonth, cDay, TheDate;

	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);

	madd[0] = 0;
	madd[1] = 31;
	madd[2] = 59;
	madd[3] = 90;
	madd[4] = 120;
	madd[5] = 151;
	madd[6] = 181;
	madd[7] = 212;
	madd[8] = 243;
	madd[9] = 273;
	madd[10] = 304;
	madd[11] = 334;
	function GetBit(m, n) {
		return (m >> n) & 1;
	}

	function e2c() {
		TheDate = (arguments.length != 3) ? new Date() : new Date(arguments[0],
				arguments[1], arguments[2]);
		var total, m, n, k;
		var isEnd = false;
		var tmp = TheDate.getFullYear();
		total = (tmp - 1921) * 365 + Math.floor((tmp - 1921) / 4)
				+ madd[TheDate.getMonth()] + TheDate.getDate() - 38;
		if (TheDate.getYear() % 4 == 0 && TheDate.getMonth() > 1) {
			total++;
		}
		for (m = 0;; m++) {
			k = (CalendarData[m] < 0xfff) ? 11 : 12;
			for (n = k; n >= 0; n--) {
				if (total <= 29 + GetBit(CalendarData[m], n)) {
					isEnd = true;
					break;
				}
				total = total - 29 - GetBit(CalendarData[m], n);
			}
			if (isEnd)
				break;
		}
		cYear = 1921 + m;
		cMonth = k - n + 1;
		cDay = total;
		if (k == 12) {
			if (cMonth == Math.floor(CalendarData[m] / 0x10000) + 1) {
				cMonth = 1 - cMonth;
			}
			if (cMonth > Math.floor(CalendarData[m] / 0x10000) + 1) {
				cMonth--;
			}
		}
	}

	function GetcDateString() {
		var tmp = "";
		tmp += tgString.charAt((cYear - 4) % 10);

		tmp += dzString.charAt((cYear - 4) % 12);
		tmp += "年 ";
		if (cMonth < 1) {
			tmp += "(闰)";
			tmp += monString.charAt(-cMonth - 1);
		} else {
			tmp += monString.charAt(cMonth - 1);
		}
		tmp += "月";
		tmp += (cDay < 11) ? "初" : ((cDay < 20) ? "十" : ((cDay < 30) ? "廿"
				: "三十"));
		if (cDay % 10 != 0 || cDay == 10) {
			tmp += numString.charAt((cDay - 1) % 10);
		}
		return tmp;
	}
	function GetLunarDay(solarYear, solarMonth, solarDay) {
		if (solarYear < 1921 || solarYear > 2020) {
			return "";
		} else {
			solarMonth = (parseInt(solarMonth) > 0) ? (solarMonth - 1) : 11;
			e2c(solarYear, solarMonth, solarDay);
			return GetcDateString();
		}
	}
	var D = new Date();
	var yy = D.getFullYear();
	var mm = D.getMonth() + 1;
	var dd = D.getDate();
	var ww = D.getDay();
	var ss = parseInt(D.getTime() / 1000);
	
	function getFullYear(d) {// 修正firefox下year错误
		yr = d.getYear();
		if (yr < 1000)
			yr += 1900;
		return yr;
	}
	
	function showDate() {
		var sValue = getFullYear(dNow) + "年" + (dNow.getMonth() + 1) + "月"
				+ dNow.getDate() + "日" + " " + sWeek[dNow.getDay()] + " ";
		sValue += GetLunarDay(yy, mm, dd);
		return sValue;
	};
	
	return showDate();
}

 

分享到:
评论

相关推荐

    带农历日期的JS日历插件

    js日历插件,支持公历、农历的日期选择,在日历中显示公历和农历。

    农历阴历获取插件(js)

    获取阴历,农历日期,用于阴历农历切换,获取阴历,农历日期,用于阴历农历切换

    calendar-converter.js_JS版公历转农历插件

    该组件是在网络上现有JS版公历转农历插件基础上开发。

    jQuery手机端HTML5带农历日期选择插件jQuery移动端日历插件swiper.js

    js目录则包含了JavaScript源代码,包括jQuery、swiper.js以及自定义的日历插件逻辑。 总的来说,这款jQuery手机端HTML5日历插件充分利用了现有的前端技术,为移动应用开发提供了一个功能齐全、用户体验良好的日期...

    SimpleCalendar.js简单带农历节日的日历插件.zip

    总的来说,"SimpleCalendar.js简单带农历节日的日历插件"是一个集成了前端技术的实践项目,对于学习JavaScript开发、前端设计和日历应用的实现都有很好的参考价值。通过研究这个插件,开发者不仅可以提升编程技能,...

    SimpleCalendar.js简单带农历节日的日历插件

    SimpleCalendar.js是一款轻量级的日历插件,它特别之处在于不仅提供了标准的阳历功能,还集成了解析和显示农历节日的能力。这款插件旨在为网页应用提供一个简洁、自适应的日期选择解决方案,同时增加了对中国传统...

    农历插件(万年历)插件 for pjblog.rar

    【农历插件(万年历)插件 for pjblog】是一款专门为pjblog博客系统设计的日历组件,旨在增强博客的功能,提供对农历日期以及各种传统节日和纪念日的支持。这款插件不仅包含了基本的农历转换功能,还囊括了丰富的...

    JQ带节假日农历日历插件

    而`js`目录则包含了JavaScript文件,其中可能包含插件的主要逻辑代码,包括日历的生成、农历转换、节假日处理等功能。JavaScript是客户端脚本语言,它使得网页具有动态交互性。 总的来说,"JQ带节假日农历日历插件...

    带农历节假日的jQuery万年历插件_万年历_

    总的来说,带农历节假日的jQuery万年历插件的开发涉及到了前端开发的多个方面,包括DOM操作、事件处理、CSS样式设计、JavaScript编程以及与外部数据源的交互。通过这样的插件,用户可以直观、方便地查看和选择日期,...

    带节日节气农历的js万年历日期控件

    本文将详细讲解一个重要的JavaScript(js)控件:带节日节气农历的万年历日期控件。这个控件集成了公历、农历、节日和节气,提供了一种全面的日历显示和选择功能。 首先,我们来理解“农历”。农历,又称阴历,是...

    jquery手机端带农历的万年历插件

    而"jquery手机端带农历的万年历插件"是一个专为移动端设计的日期选择工具,它结合了jQuery库的便利性和Swiper.js的滑动效果,提供了用户友好的界面和功能。 首先,jQuery库是这个插件的核心,它是一个轻量级的...

    lunisolar一个使用Typescript编写的专业农历库, 可取得各类农历数据,支持多语言(可自定义语言包,支持自定义插件

    Typescript农历库,支持各类黄历数据查询,如八字四柱、阴历、神煞宜忌、建除十二神、胎神占方、五行纳音等,数据基于《协纪辨方书》、“香港天文台-公历与农历日期对照表“,专业可靠。支持自定义插件。lunisolar ...

    农历版的FullCalendar插件

    而"lib"目录则可能包含了插件依赖的其他库或框架,如jQuery、moment.js等,这些库对FullCalendar的正常运行是必不可少的。 总的来说,农历版的FullCalendar插件提供了一个强大的工具,用于创建支持农历的动态日历...

    js实现在网页上展示农历日历

    在网页上展示农历日历是许多中国用户需求的功能,JavaScript(简称js)作为一种广泛用于前端开发的脚本语言,能够方便地实现这一功能。本文将详细介绍如何使用JavaScript来实现在网页上展示农历日历,以及如何参考...

    RainyxDate一个获取日期(公历、农历)的js小插件

    RainyxDate 1.0 一个获取日期(公历、农历)的js小插件 一、用法: 1、引入: [removed][removed] 2、调用: JS调用: 此段js调用代码最好放在显示日期的页面里,不要放在外调的js文件中,否则ie6显示会有问题 ...

    bootstrap-datetimepicker显示农历节假日信息扩展插件

    在描述中提到的“显示农历节假日、万年历信息扩展插件”,意味着该版本的Bootstrap-Datetimepicker已经进行了功能增强,能够不仅显示公历日期,还支持显示农历日期,并且包含了节假日信息,这对于中国的用户来说尤其...

    jquery手机端带农历的万年历插件.zip

    这是一款使用jquery结合swiper.js来制作的手机端带农历的万年历插件。该万年历类似百度的万年历,带有农历日期。用户可以通过类似iphone的滚轮来选择不同的的日期。 使用方法 在页面中引入common.css、index.css和...

    jquery带节假日农历日历插件特效

    本主题关注的是一个特定的jQuery插件,即“jquery带节假日农历日历插件特效”。这个插件是为网页应用提供一个功能丰富的日历组件,能够显示农历日期,并且内置了节假日信息,同时具备生日提醒和自定义备注事件的功能...

    农历日历控件

    对于开发者而言,理解并利用`canleder.js`文件,可以深入学习JavaScript编程以及农历日期的处理技巧,提升自己的前端开发能力。而对于使用者来说,这样的控件则能帮助他们在网页上更方便地管理和了解农历日期信息。

    SimpleCalendar.js日历插件.zip

    总结起来,SimpleCalendar.js日历插件是利用JavaScript实现的一个强大且灵活的日期选择工具,它具有丰富的功能和高度的可定制性,尤其适合那些需要同时展示公历和农历日期的项目。通过深入理解和应用这个插件,...

Global site tag (gtag.js) - Google Analytics