JS获取农历日期具体实例


Posted in Javascript onNovember 14, 2013
<script type="text/javascript">
    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 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);
    if (yy < 100) yy = "19" + yy;
    function GetCNDate() {
        return GetLunarDay(yy, mm, dd);
    }
    $(document).ready(function () {
        var d = GetCNDate();
        alert(d);
    });
</script>
Javascript 相关文章推荐
javascript原生和jquery库实现iframe自适应高度和宽度
Jul 18 Javascript
JS实现控制表格单元格垂直对齐的方法
Mar 30 Javascript
javascript函数式编程实例分析
Apr 25 Javascript
JavaScript中的lastIndexOf()方法使用详解
Jun 06 Javascript
jQuery过滤特殊字符及JS字符串转为数字
May 26 Javascript
解决jQuery ajax请求在IE6中莫名中断的问题
Jun 20 Javascript
JavaScript实现简单的双色球(实例讲解)
Jul 31 Javascript
基于js中的原型(全面讲解)
Sep 19 Javascript
React Hooks的深入理解与使用
Nov 12 Javascript
Vue.js 中的 v-cloak 指令及使用详解
Nov 19 Javascript
JavaScript 浏览器对象模型BOM原理与常见用法实例分析
Dec 16 Javascript
JavaScript流程控制(分支)
Dec 06 Javascript
提高jQuery性能的十个诀窍
Nov 14 #Javascript
优化Jquery,提升网页加载速度
Nov 14 #Javascript
Jquery AJAX POST与GET之间的区别
Nov 14 #Javascript
Jquery中$.get(),$.post(),$.ajax(),$.getJSON()的用法总结
Nov 14 #Javascript
JS正则表达式大全(整理详细且实用)
Nov 14 #Javascript
JS中typeof与instanceof之间的区别总结
Nov 14 #Javascript
jQuery探测位置的提示弹窗(toolTip box)详细解析
Nov 14 #Javascript
You might like
在php中取得image按钮传递的name值
2006/10/09 PHP
PHP新手上路(七)
2006/10/09 PHP
测试php函数的方法
2013/11/13 PHP
Yii2框架中一些折磨人的坑
2019/12/15 PHP
jquery.validate使用攻略 第五步 正则验证
2010/07/01 Javascript
兼容ie、firefox的图片自动缩放的css跟js代码分享
2013/08/12 Javascript
jQuery中wrapAll()方法用法实例
2015/01/16 Javascript
通用javascript代码判断版本号是否在版本范围之间
2015/11/29 Javascript
jQuery使用$.ajax进行即时验证实例详解
2015/12/11 Javascript
javascript日期格式化方法小结
2015/12/17 Javascript
js读取json文件片段中的数据实例
2017/03/09 Javascript
80%应聘者都不及格的JS面试题
2017/03/21 Javascript
AngularJs分页插件使用详解
2018/06/30 Javascript
通过js实现压缩图片上传功能
2020/02/25 Javascript
用JavaScript实现贪吃蛇游戏
2020/10/23 Javascript
Python 出现错误TypeError: ‘NoneType’ object is not iterable解决办法
2017/01/12 Python
Mac中Python 3环境下安装scrapy的方法教程
2017/10/26 Python
windows下 兼容Python2和Python3的解决方法
2018/12/05 Python
在pycharm下设置自己的个性模版方法
2019/07/15 Python
Django CBV与FBV原理及实例详解
2019/08/12 Python
Python使用Matlab命令过程解析
2020/06/04 Python
python中plt.imshow与cv2.imshow显示颜色问题
2020/07/16 Python
Django数据库迁移常见使用方法
2020/11/12 Python
联想澳大利亚官网:Lenovo Australia
2018/01/18 全球购物
德国圣伯纳德草药屋:Kräuterhaus Sanct Bernhard(有中文站)
2018/08/05 全球购物
Mansur Gavriel官网:纽约市的一个设计品牌
2019/05/02 全球购物
司机岗位职责
2013/11/15 职场文书
护理学专业求职信
2014/06/29 职场文书
高中运动会广播稿
2014/09/16 职场文书
离婚财产分隔协议书
2014/10/23 职场文书
汽车转让协议书范本
2014/12/07 职场文书
水电工程师岗位职责
2015/02/13 职场文书
巴黎圣母院读书笔记
2015/06/26 职场文书
nginx对http请求处理的各个阶段详析
2021/03/31 Servers
在Django中使用MQTT的方法
2021/05/10 Python
JavaScript模拟实现网易云轮播效果
2022/04/04 Javascript