jQuery获取某天的农历日期并判断是否除夕或新年的方法


Posted in Javascript onMarch 01, 2016

本文实例讲述了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程序设计有所帮助。

Javascript 相关文章推荐
javascript里的条件判断
Feb 27 Javascript
List the UTC Time on a Computer
Jun 11 Javascript
关于JAVASCRIPT urldecode URL解码的问题
Jan 08 Javascript
用原生js做个简单的滑动效果的回到顶部
Oct 15 Javascript
在JavaScript中处理时间之setMinutes()方法的使用
Jun 11 Javascript
js格式化时间的方法
Dec 18 Javascript
轻松理解JavaScript闭包
Mar 14 Javascript
Omi v1.0.2发布正式支持传递javascript表达式
Mar 21 Javascript
全面解析Node.js 8 重要功能和修复
Jun 02 Javascript
jQuery上传插件webupload使用方法
Aug 01 jQuery
百度地图去掉marker覆盖物或者去掉maker的label文字方法
Jan 26 Javascript
vue elementUI使用tabs与导航栏联动
Jun 21 Javascript
jQuery实现获取table表格第一列值的方法
Mar 01 #Javascript
JavaScript Date对象详解
Mar 01 #Javascript
JavaScript通过使用onerror设置默认图像显示代替alt
Mar 01 #Javascript
jQuery增加与删除table列的方法
Mar 01 #Javascript
JavaScript如何实现组合列表框中元素移动效果
Mar 01 #Javascript
JavaScript常用函数工具集:lao-utils
Mar 01 #Javascript
JavaScript Array对象详解
Mar 01 #Javascript
You might like
php下用cookie统计用户访问网页次数的代码
2010/05/09 PHP
在PHP中设置、使用、删除Cookie的解决方法
2013/05/06 PHP
PHP学习笔记之字符串编码的转换和判断
2014/05/22 PHP
jQuery获取json后使用zy_tmpl生成下拉菜单
2015/03/27 PHP
php实现的debug log日志操作类实例
2016/07/12 PHP
php实现留言板功能(代码详解)
2017/03/28 PHP
Laravel框架集成UEditor编辑器的方法图文与实例详解
2019/04/17 PHP
javascript将DOM节点添加到文档的方法实例分析
2015/08/04 Javascript
Jquery对新插入的节点 绑定Click事件失效的解决方法
2016/06/02 Javascript
js实现带简单弹性运动的导航条
2017/02/22 Javascript
全面解析Node.js 8 重要功能和修复
2017/06/02 Javascript
浅谈JS对html标签的属性的干预以及对CSS样式表属性的干预
2017/06/25 Javascript
用Vue-cli搭建的项目中引入css报错的原因分析
2017/07/20 Javascript
vue 中使用 watch 出现了如下的报错的原因分析
2019/05/21 Javascript
解决layui使用layui-icon出现默认图标的问题
2019/09/11 Javascript
react PropTypes校验传递的值操作示例
2020/04/28 Javascript
[01:09:50]VP vs Pain 2018国际邀请赛小组赛BO2 第二场
2018/08/20 DOTA
python函数式编程学习之yield表达式形式详解
2018/03/25 Python
padas 生成excel 增加sheet表的实例
2018/12/11 Python
python利用selenium进行浏览器爬虫
2019/04/25 Python
matplotlib.pyplot画图并导出保存的实例
2019/12/07 Python
pytorch torch.nn.AdaptiveAvgPool2d()自适应平均池化函数详解
2020/01/03 Python
python 通过邮件控制实现远程控制电脑操作
2020/03/16 Python
详解android与HTML混合开发总结
2018/06/06 HTML / CSS
摩托车和ATV零件、配件和服装的首选在线零售商:MotoSport
2017/12/22 全球购物
Calzedonia美国官网:意大利风格袜子、打底裤和沙滩装
2018/07/19 全球购物
工程监理应届生求职信
2013/11/09 职场文书
警察思想汇报
2014/01/04 职场文书
中国梦口号
2014/06/13 职场文书
社会实践的活动方案
2014/08/22 职场文书
2014年教育实习工作总结
2014/11/22 职场文书
十二生肖观后感
2015/06/12 职场文书
html实现随机点名器的示例代码
2021/04/02 Javascript
教你如何用python开发一款数字推盘小游戏
2021/04/14 Python
python中的3种定义类方法
2021/11/27 Python
mysql中关键词exists的用法实例详解
2022/06/10 MySQL