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

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
RainyxDate 1.0 一个获取日期(公历、农历)的js插件 一、用法: 1、引入: [removed][removed] 2、调用: JS调用: 此段js调用代码最好放在显示日期的页面里,不要放在外调的js文件中,否则ie6显示会有问题 [removed] $(document).ready(function(){ //网页一般都会用到jQuery吧,所以要记得引入jQuery库 //日期调用 var d = GetCNDate(); //调用农历的语句 var a = GetYLDateYMDW() + " " + d; //调用阳历时间 $('#time').html(a); //“time”为显示时间div的id }) [removed] Html写法: * 二、函数: function GetNlDate() 获取农历日期字符串,例如:“壬辰(龙)年 腊月十四” function GetGLDateAll() 获取完整的公历日期字符串,例如:“2013年1月25日 下午 2:59:11 星期五” function GetGLDateYMDW() 获取年、月、日、星期的公历日期字符串,例如:“2013年1月25日 下午 星期五” 三、说明: 这只是实现基本功能,需要其他显示效果的自己写函数吧 ~~ 四、缺陷: 1、只能读取并计算出客户端的时间,如果客户端时间不准,那你懂的;解决办法也有,就是写服务端代码,不过服务端代码不利于静态页面生成(就是说生成的静态页面无法自动更新日期);再解决也有,思路可能是js调用服务端时间,然后在显示到页面上,想想都复杂... 2、无法读秒,这个在js调用中加入一个计数器就可以了,用jQuery还是比较容易实现的,没更多说明了

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值