获取阴历(农历)和当前日期的js代码


Posted in Javascript onFebruary 15, 2016

本文为大家分享了一段js显示阴历(农历)和当前日期的关键性代码,供大家参考,具体内容如下

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 showCal(){
document.write(GetLunarDay(yy,mm,dd));
}

页面调用代码:

<script language="JavaScript" type="text/javascript" src="getCNdate.js"></script>
 
<script type="text/javascript">showCal();</script>

代码二:用JavaScript获取当前农历日期

<script type="text/javascript">
 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);
   document.getElementById("pDate").innerHTML = sValue;
};
window.onload=showDate;
</script>

知道如何获取农历,如何呢获取当前日期也很简单。

function GetCurrentDateTime() {
  var d = new Date();
  var year = d.getFullYear();
  var month = d.getMonth() + 1;
  var date = d.getDate();
  var week = d.getDay();
  var hours = d.getHours();
  var minutes = d.getMinutes();
  var seconds = d.getSeconds();
  var ms = d.getMilliseconds();
  var curDateTime = year;
  if (month > 9)
    curDateTime = curDateTime + "年" + month;
  else
    curDateTime = curDateTime + "年0" + month;
  if (date > 9)
    curDateTime = curDateTime + "月" + date + "日";
  else
    curDateTime = curDateTime + "月0" + date + "日";
  if (hours > 9)
    curDateTime = curDateTime + " " + hours;
  else
    curDateTime = curDateTime + " 0" + hours;
  if (minutes > 9)
    curDateTime = curDateTime + ":" + minutes;
  else
    curDateTime = curDateTime + ":0" + minutes;
  if (seconds > 9)
    curDateTime = curDateTime + ":" + seconds;
  else
    curDateTime = curDateTime + ":0" + seconds;
  var weekday = "";
  if (week == 0)
    weekday = "星期日";
  else if (week == 1)
    weekday = "星期一";
  else if (week == 2)
    weekday = "星期二";
  else if (week == 3)
    weekday = "星期三";
  else if (week == 4)
    weekday = "星期四";
  else if (week == 5)
    weekday = "星期五";
  else if (week == 6)
    weekday = "星期六";
  curDateTime = curDateTime + " " + weekday;
  return curDateTime;
}

页面调用代码:

<script language="JavaScript" type="text/javascript" src="getToday.js"></script>

希望本文所述对大家利用js代码获取阴历(农历)日期有所帮助,抓紧收藏起来吧!

Javascript 相关文章推荐
JS 无法通过W3C验证的处理方法
Mar 09 Javascript
js防止表单重复提交的两种方法
Sep 30 Javascript
js点击事件链接的问题解决
Apr 25 Javascript
JavaScript实现的一个日期格式化函数分享
Dec 06 Javascript
JS中如何实现复选框全选功能
Dec 19 Javascript
jQuery实现拖动剪裁图片作为头像
Dec 28 Javascript
常见的浏览器Hack技巧整理
Jun 29 Javascript
JavaScript中click和onclick本质区别与用法分析
Jun 07 Javascript
详解性能更优越的小程序图片懒加载方式
Jul 18 Javascript
Vue登录注册并保持登录状态的方法
Aug 17 Javascript
详解从0开始搭建微信小程序(前后端)的全过程
Apr 15 Javascript
JavaScript中的连续赋值问题实例分析
Jul 12 Javascript
极易被忽视的javascript面试题七问七答
Feb 15 #Javascript
在JavaScript中使用JSON数据
Feb 15 #Javascript
三分钟带你玩转jQuery.noConflict()
Feb 15 #Javascript
轻松搞定jQuery.noConflict()
Feb 15 #Javascript
JavaScript的Backbone.js框架的一些使用建议整理
Feb 14 #Javascript
简单了解Backbone.js的Model模型以及View视图的源码
Feb 14 #Javascript
Backbone.js框架中简单的View视图编写学习笔记
Feb 14 #Javascript
You might like
PHP filter_var() 函数 Filter 函数
2012/04/25 PHP
PHP下 Mongodb 连接远程数据库的实例代码
2017/08/30 PHP
关于viewport,Ext.panel和Ext.form.panel的关系
2009/05/07 Javascript
锋利的jQuery 要点归纳(二) jQuery中的DOM操作(下)
2010/03/23 Javascript
麻雀虽小五脏俱全 Dojo自定义控件应用
2010/09/04 Javascript
子窗体与父窗体传值示例js代码
2013/08/01 Javascript
jQuery简单实现仿京东商城的左侧菜单效果代码
2015/09/09 Javascript
Js的Array数组对象详解
2016/02/22 Javascript
分享两段简单的JS代码防止SQL注入
2016/04/12 Javascript
JavaScript入门教程之引用类型
2016/05/04 Javascript
jQuery简单实现点击文本框复制内容到剪贴板上的方法
2016/08/01 Javascript
jQuery实现的网页换肤效果示例
2016/09/20 Javascript
vue实现列表的添加点击
2016/12/29 Javascript
JavaScript使用readAsDataUrl方法预览图片
2017/05/10 Javascript
vuejs2.0子组件改变父组件的数据实例
2017/05/10 Javascript
微信小程序 wx.request方法的异步封装实例详解
2017/05/18 Javascript
vue2 router 动态传参,多个参数的实例
2017/11/10 Javascript
bootstrapTable+ajax加载数据 refresh更新数据
2018/08/31 Javascript
JS获取本地地址及天气的方法实例小结
2019/05/10 Javascript
vue安装遇到的5个报错及解决方法
2019/06/12 Javascript
vue-axios同时请求多个接口 等所有接口全部加载完成再处理操作
2020/11/09 Javascript
Vue使用Proxy代理后仍无法生效的解决
2020/11/13 Javascript
[49:29]LGD vs Winstrike 2018国际邀请赛小组赛BO2 第一场 8.17
2018/08/18 DOTA
对Python发送带header的http请求方法详解
2019/01/02 Python
python调试神器PySnooper的使用
2019/07/03 Python
python图形开发GUI库pyqt5的基本使用方法详解
2020/02/14 Python
Python序列化pickle模块使用详解
2020/03/05 Python
Python按照list dict key进行排序过程解析
2020/04/04 Python
PyInstaller的安装和使用的详细步骤
2020/06/02 Python
Keras实现支持masking的Flatten层代码
2020/06/16 Python
Python多分支if语句的使用
2020/09/03 Python
德国家具、照明、家居用品网上商店:Wayfair.de
2020/02/13 全球购物
技术总监岗位职责
2013/12/05 职场文书
真诚的求职信
2014/07/04 职场文书
单方离婚协议书范本(2014版)
2014/09/30 职场文书
小学课改工作总结
2015/08/13 职场文书