jQuery获取某天的农历日期并判断是否除夕或新年的方法
本文实例讲述了jQuery获取某天的农历日期并判断是否除夕或新年的方法。分享给大家供大家参考,具体如下:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<script src="jquery.min.js" type="text/javascript"></script>
<script type="text/javascript">
//------------------- Begin ----------------------
CalendarHelper={};
CalendarHelper.GetCNDate = function (D) {
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.getYear();
if (tmp < 1900) {
tmp += 1900;
}
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 += "(";
tmp += sx.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) {
//solarYear = solarYear<1900?(1900+solarYear):solarYear;
if (solarYear < 1921 || solarYear > 2020) {
return "";
} else {
solarMonth = (parseInt(solarMonth) > 0) ? (solarMonth - 1) : 11;
e2c(solarYear, solarMonth, solarDay);
return GetcDateString();
}
}
var yy = D.getFullYear();
var mm = D.getMonth() + 1;
var dd = D.getDate();
var ww = D.getDay();
var ss = parseInt(D.getTime() / 1000);
if (yy < 100) yy = "19" + yy;
return GetLunarDay(yy, mm, dd);
};
CalendarHelper.GetAddDay = function (D, v) {
var LSTR_ndate = D;
var LSTR_Year = LSTR_ndate.getYear();
var LSTR_Month = LSTR_ndate.getMonth();
var LSTR_Date = LSTR_ndate.getDate();
//处理
var uom = new Date(LSTR_Year, LSTR_Month, LSTR_Date);
uom.setDate(uom.getDate() + v); //取得系统时间的前一天,重点在这里,负数是前几天,正数是后几天
return uom;
}
//是否除夕
CalendarHelper.IsLastDayBeforeNewYearOfCN = function (D) {
var strCurrDay = CalendarHelper.GetCNDate(D);
var strNextDay = CalendarHelper.GetCNDate(CalendarHelper.GetAddDay(D, 1));
//alert(strCurrDay+","+strNextDay);
return strCurrDay.split('年')[0] != strNextDay.split('年')[0];
};
//是否春节
CalendarHelper.IsNewYearOfCN = function (D) {
var strCurrDay = CalendarHelper.GetCNDate(D);
var strPrevDay = CalendarHelper.GetCNDate(CalendarHelper.GetAddDay(D, -1));
//alert(strCurrDay+","+strPrevDay);
return strCurrDay.split('年')[0] != strPrevDay.split('年')[0];
};
//------------------- End ----------------------
var d1 = new Date();
var d2 = new Date(2013, 1, 9); //注:此处相当于2013年2月9号
var d3 = new Date(2013, 1, 10);
var result = GetResult(d1) + GetResult(d2) + GetResult(d3);
alert(result);
function GetResult(D) {
var y = D.getFullYear();
var m = D.getMonth() + 1;
var dd = D.getDate();
var str = y + "年" + m + "月" + dd + "日";
var isR = CalendarHelper.IsLastDayBeforeNewYearOfCN(D);
var isN = CalendarHelper.IsNewYearOfCN(D);
return "日期:"+str+","+ (isR?"是":"不是") + "除夕" + "," + (isN?"是":"不是") + "春节\n\n" ;
}
</script>
</head>
<body>
</body>
</html>
更多关于jQuery相关内容感兴趣的读者可查看本站专题:《jQuery日期与时间操作技巧总结》、《jQuery拖拽特效与技巧总结》、《jQuery扩展技巧总结》、《jQuery常见经典特效汇总》、《jQuery动画与特效用法总结》、《jquery选择器用法总结》及《jQuery常用插件及用法总结》
希望本文所述对大家jQuery程序设计有所帮助。
- jQuery带时间的日期控件代码分享
- jQuery插件datepicker 日期连续选择
- Jquery日期选择datepicker插件用法实例分析
- jQuery实现简单的日期输入格式化控件
- jquery获取当前日期的方法
- jquery实现在页面加载的时自动为日期插件添加当前日期
- jQuery ui 利用 datepicker插件实现开始日期(minDate)和结束日期(maxDate)
- JQuery EasyUI 日期控件如何控制日期选择区间
- jquery validate 自定义验证方法介绍 日期验证
- jquery 日期控件datepicker属性详细解析
- jQuery之日期选择器的深入解析
- 获取客户端电脑日期时间js代码(jquery)
相关文章
jQuery+css3实现转动的正方形效果(附demo源码下载)
这篇文章主要介绍了jQuery+css3实现转动的正方形效果,可实现图片组集体转动的功能,通过jQuery结合时间函数定时操作css3属性实现旋转效果,并附带demo源码供读者下载,需要的朋友可以参考下2016-01-01
jQuery插件echarts实现的循环生成图效果示例【附demo源码下载】
这篇文章主要介绍了jQuery插件echarts实现的循环生成图效果,结合完整实例形式分析了echarts插件循环输出数字图形的实现步骤与相关操作技巧,并附带demo源码供读者下载参考,需要的朋友可以参考下2017-03-03
jQuery EasyUI 选项卡面板tabs的使用实例讲解
下面小编就为大家分享一篇jQuery EasyUI 选项卡面板tabs的使用实例讲解,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧2017-12-12
jquery ajax的success回调函数中实现按钮置灰倒计时
实现异步手机发送短信成功之后在ajax的success回调中实现将发送按钮置灰并倒计时,具体的实现示例如下,喜欢的朋友可以研究下2013-11-11
jQuery formValidator表单验证插件开源了 含API帮助、源码、示例
ajaxValidator函数在提交后发生错误,停留在本页面后,再次触发校验会让提示内容一直处于onload状态。2008-08-08


最新评论