JS简单获取当前日期和农历日期的方法


Posted in Javascript onApril 17, 2017

本文实例讲述了JS简单获取当前日期和农历日期的方法。分享给大家供大家参考,具体如下:

navCal.js文件如下:

today=new Date();
function initArray(){
  this.length=initArray.arguments.length
  for(var i=0;i<this.length;i++)
  this[i+1]=initArray.arguments[i] }
  var d=new initArray(
   "星期日",
   "星期一",
   "星期二",
   "星期三",
   "星期四",
   "星期五",
   "星期六");
document.write(today.getFullYear(),"年",today.getMonth()+1,"月",today.getDate(),"日 ",d[today.getDay()+1]," ");
calendar = new Date();
month = calendar.getMonth();
date = calendar.getDate();
if ((month == 0) && (date == 1)) document.write("元旦");
if ((month == 2) && (date == 12)) document.write("植树节");
if ((month == 3) && (date == 5)) document.write("清明节");
if ((month == 4) && (date == 1)) document.write("国际劳动节");
if ((month == 4) && (date == 4)) document.write("青年节");
if ((month == 5) && (date == 1)) document.write("国际儿童节");
if ((month == 7) && (date == 1)) document.write("建军节");
if ((month == 7) && (date == 16)) document.write("七夕情人节");
if ((month == 9) && (date == 1)) document.write("国庆节/国际音乐节/国际老人节");
if ((month == 11) && (date == 24)) document.write("平安夜");
if ((month == 11) && (date == 25)) document.write("圣诞节");
/*农历部分*/
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));
}
showCal();

调用方法:

<script type="text/JavaScript" src="navCal.js"></script>

运行效果图如下:

JS简单获取当前日期和农历日期的方法

Javascript 相关文章推荐
document.getElementById为空或不是对象的解决方法
Jan 24 Javascript
解析javascript中鼠标滚轮事件
May 26 Javascript
基于jquery实现日历签到功能
Sep 11 Javascript
JSON+Jquery省市区三级联动
Jan 13 Javascript
JS上传图片预览插件制作(兼容到IE6)
Aug 07 Javascript
easyUI实现(alert)提示框自动关闭的实例代码
Nov 07 Javascript
js案例之鼠标跟随jquery版(实例讲解)
Jul 21 jQuery
浅谈Vue.nextTick 的实现方法
Oct 25 Javascript
Vue中的scoped实现原理及穿透方法
May 15 Javascript
jQuery基于Ajax实现读取XML数据功能示例
May 31 jQuery
vue canvas绘制矩形并解决由clearRec带来的闪屏问题
Sep 02 Javascript
JavaScript实现省市联动效果
Nov 22 Javascript
Vue.js仿Metronic高级表格(一)静态设计
Apr 17 #Javascript
react.js CMS 删除功能的实现方法
Apr 17 #Javascript
JS实现二叉查找树的建立以及一些遍历方法实现
Apr 17 #Javascript
简单的JS控制button颜色随点击更改的实现方法
Apr 17 #Javascript
jQuery实现动态生成表格并为行绑定单击变色动作的方法
Apr 17 #jQuery
Vue分页组件实例代码
Apr 17 #Javascript
浅谈react.js 之 批量添加与删除功能
Apr 17 #Javascript
You might like
PHP STRING 陷阱原理说明
2010/07/24 PHP
php获取当前时间的毫秒数的方法
2014/01/26 PHP
PHPThumb图片处理实例
2014/05/03 PHP
PHP命令行脚本接收传入参数的三种方式
2014/08/20 PHP
利用phpexcel对数据库数据的导入excel(excel筛选)、导出excel
2017/04/27 PHP
PHP实现正则匹配所有括号中的内容
2018/06/22 PHP
PHP检查端口是否可以被绑定的方法示例
2018/08/09 PHP
很多人都是用下面的js刷新站IP和PV
2008/09/05 Javascript
基于jQuery选择器的整理集合
2013/04/26 Javascript
JS画线(实例代码)
2013/11/20 Javascript
千分位数字格式化(用逗号隔开 代码已做了修改 支持0-9位逗号隔开)的JS代码
2013/12/05 Javascript
jQuery ajax调用WCF服务实例
2014/07/16 Javascript
Bootstrap选项卡与Masonry插件的完美结合
2016/07/06 Javascript
详解微信小程序 页面跳转 传递参数
2016/12/08 Javascript
深入学习 JavaScript中的函数调用
2017/03/23 Javascript
JavaScript之排序函数_动力节点Java学院整理
2017/06/30 Javascript
JS倒计时实例_天时分秒
2017/08/22 Javascript
vue2.0+vuex+localStorage代办事项应用实现详解
2018/05/31 Javascript
vue element项目引入icon图标的方法
2018/06/06 Javascript
微信小程序表单弹窗实例
2018/07/19 Javascript
python按照多个字符对字符串进行分割的方法
2015/03/17 Python
python同时给两个收件人发送邮件的方法
2015/04/30 Python
Python嵌套函数,作用域与偏函数用法实例分析
2019/12/26 Python
Django 404、500页面全局配置知识点详解
2020/03/10 Python
Python+Django+MySQL实现基于Web版的增删改查的示例代码
2020/05/13 Python
Keras之fit_generator与train_on_batch用法
2020/06/17 Python
实例教程 纯CSS3打造非常炫的加载动画效果
2014/11/05 HTML / CSS
澳大利亚优质葡萄酒专家:Vintage Cellars
2019/01/08 全球购物
实习生个人的自我评价
2013/12/08 职场文书
课前三分钟演讲稿
2014/04/24 职场文书
文明城市标语
2014/06/16 职场文书
2015年工会工作总结
2015/03/30 职场文书
务工证明怎么写
2015/06/18 职场文书
使用ORM新增数据在Mysql中的操作步骤
2021/07/26 MySQL
Python可变与不可变数据和深拷贝与浅拷贝
2022/04/06 Python
Redis实现一个账号只能登录一个设备
2022/04/19 Redis