转自: http://www.codefans.net/jscss/code/1715.shtml (有Demo)

  • 本JavaScript日历是从百度网站里整理出来的,费了很大劲,因为感觉这个日历简直太棒了,没有使用任何的外部文件,全部是HTML代码和Javascirpt实现,而且日历功能很强大,带有节日、农历等,运行看效果就明白了,相信不会让您失望的。

<title>
百度的Js日历,值得一看
</title>
<table cellpadding="0" cellspacing="0" id="1">
<tr>
<td>
<style>
body,td,.p1,.p2,.i{font-family:arial} body{margin:6px 0 0 0;background-color:#fff;color:#000;}
table{border:0} #cal{width:434px;border:1px solid #c3d9ff;font-size:12px;margin:8px
0 0 15px} #cal #top{height:29px;line-height:29px;background:#e7eef8;color:#003784;padding-left:70px}
#cal #top select{font-size:12px} #cal #top input{padding:0} #cal ul#wk{margin:0;padding:0;height:25px}
#cal ul#wk li{float:left;width:60px;text-align:center;line-height:25px;list-style:none}
#cal ul#wk li b{font-weight:normal;color:#c60b02} #cal #cm{clear:left;border-top:1px
solid #ddd;border-bottom:1px dotted #ddd;position:relative} #cal #cm .cell{position:absolute;width:42px;height:36px;text-align:center;margin:0
0 0 9px} #cal #cm .cell .so{font:bold 16px arial;} #cal #bm{text-align:right;height:24px;line-height:24px;padding:0
13px 0 0} #cal #bm a{color:7977ce} #cal #fd{display:none;position:absolute;border:1px
solid #dddddf;background:#feffcd;padding:10px;line-height:21px;width:150px}
#cal #fd b{font-weight:normal;color:#c60a00}
</style>
<!--[if IE]>
<style>
#cal #top{padding-top:4px} #cal #top input{width:65px} #cal #fd{width:170px}
</style>
<![endif]-->
<div id="cal">
<div id="top">
公元
<select>
</select>
年
<select>
</select>
月 农历
<span>
</span>
年 [
<span>
</span>
年 ]
<input type="button" value="回到今天" title="点击后跳转回今天" style="padding:0px">
</div>
<ul id="wk">
<li>
一
</li>
<li>
二
</li>
<li>
三
</li>
<li>
四
</li>
<li>
五
</li>
<li>
<b>
六
</b>
</li>
<li>
<b>
日
</b>
</li>
</ul>
<div id="cm">
</div>
<div id="bm">
</div>
</div>
</td>
</tr>
</table>
<script type="text/javascript">
< !--(function() {
var S = navigator.userAgent.indexOf("MSIE") != -1 && !window.opera;
function M(C) {
return document.getElementById(C)
}
function R(C) {
return document.createElement(C)
}
var P = [19416, 19168, 42352, 21717, 53856, 55632, 91476, 22176, 39632, 21970, 19168, 42422, 42192, 53840, 119381, 46400, 54944, 44450, 38320, 84343, 18800, 42160, 46261, 27216, 27968, 109396, 11104, 38256, 21234, 18800, 25958, 54432, 59984, 28309, 23248, 11104, 100067, 37600, 116951, 51536, 54432, 120998, 46416, 22176, 107956, 9680, 37584, 53938, 43344, 46423, 27808, 46416, 86869, 19872, 42448, 83315, 21200, 43432, 59728, 27296, 44710, 43856, 19296, 43748, 42352, 21088, 62051, 55632, 23383, 22176, 38608, 19925, 19152, 42192, 54484, 53840, 54616, 46400, 46496, 103846, 38320, 18864, 43380, 42160, 45690, 27216, 27968, 44870, 43872, 38256, 19189, 18800, 25776, 29859, 59984, 27480, 21952, 43872, 38613, 37600, 51552, 55636, 54432, 55888, 30034, 22176, 43959, 9680, 37584, 51893, 43344, 46240, 47780, 44368, 21977, 19360, 42416, 86390, 21168, 43312, 31060, 27296, 44368, 23378, 19296, 42726, 42208, 53856, 60005, 54576, 23200, 30371, 38608, 19415, 19152, 42192, 118966, 53840, 54560, 56645, 46496, 22224, 21938, 18864, 42359, 42160, 43600, 111189, 27936, 44448];
var K = "甲乙丙丁戊己庚辛壬癸";
var J = "子丑寅卯辰巳午未申酉戌亥";
var O = "鼠牛虎兔龙蛇马羊猴鸡狗猪";
var L = ["小寒", "大寒", "立春", "雨水", "惊蛰", "春分", "清明", "谷雨", "立夏", "小满", "芒种", "夏至", "小暑", "大暑", "立秋", "处暑", "白露", "秋分", "寒露", "霜降", "立冬", "小雪", "大雪", "冬至"];
var D = [0, 21208, 43467, 63836, 85337, 107014, 128867, 150921, 173149, 195551, 218072, 240693, 263343, 285989, 308563, 331033, 353350, 375494, 397447, 419210, 440795, 462224, 483532, 504758];
var B = "日一二三四五六七八九十";
var H = ["正", "二", "三", "四", "五", "六", "七", "八", "九", "十", "十一", "腊"];
var E = "初十廿卅";
var V = {
"0101": "*1元旦节",
"0214": "情人节",
"0305": "学雷锋纪念日",
"0308": "妇女节",
"0312": "植树节",
"0315": "消费者权益日",
"0401": "愚人节",
"0501": "*1劳动节",
"0504": "青年节",
"0601": "国际儿童节",
"0701": "中国共产党诞辰",
"0801": "建军节",
"0910": "中国教师节",
"1001": "*3国庆节",
"1224": "平安夜",
"1225": "圣诞节"
};
var T = {
"0101": "*2春节",
"0115": "元宵节",
"0505": "*1端午节",
"0815": "*1中秋节",
"0909": "重阳节",
"1208": "腊八节",
"0100": "除夕"
};
function U(Y) {
function c(j, i) {
var h = new Date((31556925974.7 * (j - 1900) + D[i] * 60000) + Date.UTC(1900, 0, 6, 2, 5));
return (h.getUTCDate())
}
function d(k) {
var h, j = 348;
for (h = 32768; h > 8; h >>= 1) {
j += (P[k - 1900] & h) ? 1 : 0
}
return (j + b(k))
}
function a(h) {
return (K.charAt(h % 10) + J.charAt(h % 12))
}
function b(h) {
if (g(h)) {
return ((P[h - 1900] & 65536) ? 30 : 29)
} else {
return (0)
}
}
function g(h) {
return (P[h - 1900] & 15)
}
function e(i, h) {
return ((P[i - 1900] & (65536 >> h)) ? 30 : 29)
}
function C(m) {
var k, j = 0,
h = 0;
var l = new Date(1900, 0, 31);
var n = (m - l) / 86400000;
this.dayCyl = n + 40;
this.monCyl = 14;
for (k = 1900; k < 2050 && n > 0; k++) {
h = d(k);
n -= h;
this.monCyl += 12
}
if (n < 0) {
n += h;
k--;
this.monCyl -= 12
}
this.year = k;
this.yearCyl = k - 1864;
j = g(k);
this.isLeap = false;
for (k = 1; k < 13 && n > 0; k++) {
if (j > 0 && k == (j + 1) && this.isLeap == false) {--k;
this.isLeap = true;
h = b(this.year)
} else {
h = e(this.year, k)
}
if (this.isLeap == true && k == (j + 1)) {
this.isLeap = false
}
n -= h;
if (this.isLeap == false) {
this.monCyl++
}
}
if (n == 0 && j > 0 && k == j + 1) {
if (this.isLeap) {
this.isLeap = false
} else {
this.isLeap = true; --k; --this.monCyl
}
}
if (n < 0) {
n += h; --k; --this.monCyl
}
this.month = k;
this.day = n + 1
}
function G(h) {
return h < 10 ? "0" + h: h
}
function f(i, j) {
var h = i;
return j.replace(/dd?d?d?|MM?M?M?|yy?y?y?/g,
function(k) {
switch (k) {
case "yyyy":
var l = "000" + h.getFullYear();
return l.substring(l.length - 4);
case "dd":
return G(h.getDate());
case "d":
return h.getDate().toString();
case "MM":
return G((h.getMonth() + 1));
case "M":
return h.getMonth() + 1
}
})
}
function Z(i, h) {
var j;
switch (i, h) {
case 10:
j = "初十";
break;
case 20:
j = "二十";
break;
case 30:
j = "三十";
break;
default:
j = E.charAt(Math.floor(h / 10));
j += B.charAt(h % 10)
}
return (j)
}
this.date = Y;
this.isToday = false;
this.isRestDay = false;
this.solarYear = f(Y, "yyyy");
this.solarMonth = f(Y, "M");
this.solarDate = f(Y, "d");
this.solarWeekDay = Y.getDay();
this.solarWeekDayInChinese = "星期" + B.charAt(this.solarWeekDay);
var X = new C(Y);
this.lunarYear = X.year;
this.shengxiao = O.charAt((this.lunarYear - 4) % 12);
this.lunarMonth = X.month;
this.lunarIsLeapMonth = X.isLeap;
this.lunarMonthInChinese = this.lunarIsLeapMonth ? "闰" + H[X.month - 1] : H[X.month - 1];
this.lunarDate = X.day;
this.showInLunar = this.lunarDateInChinese = Z(this.lunarMonth, this.lunarDate);
if (this.lunarDate == 1) {
this.showInLunar = this.lunarMonthInChinese + "月"
}
this.ganzhiYear = a(X.yearCyl);
this.ganzhiMonth = a(X.monCyl);
this.ganzhiDate = a(X.dayCyl++);
this.jieqi = "";
this.restDays = 0;
if (c(this.solarYear, (this.solarMonth - 1) * 2) == f(Y, "d")) {
this.showInLunar = this.jieqi = L[(this.solarMonth - 1) * 2]
}
if (c(this.solarYear, (this.solarMonth - 1) * 2 + 1) == f(Y, "d")) {
this.showInLunar = this.jieqi = L[(this.solarMonth - 1) * 2 + 1]
}
if (this.showInLunar == "清明") {
this.showInLunar = "清明节";
this.restDays = 1
}
this.solarFestival = V[f(Y, "MM") + f(Y, "dd")];
if (typeof this.solarFestival == "undefined") {
this.solarFestival = ""
} else {
if (/\*(\d)/.test(this.solarFestival)) {
this.restDays = parseInt(RegExp.$1);
this.solarFestival = this.solarFestival.replace(/\*\d/, "")
}
}
this.showInLunar = (this.solarFestival == "") ? this.showInLunar: this.solarFestival;
this.lunarFestival = T[this.lunarIsLeapMonth ? "00": G(this.lunarMonth) + G(this.lunarDate)];
if (typeof this.lunarFestival == "undefined") {
this.lunarFestival = ""
} else {
if (/\*(\d)/.test(this.lunarFestival)) {
this.restDays = (this.restDays > parseInt(RegExp.$1)) ? this.restDays: parseInt(RegExp.$1);
this.lunarFestival = this.lunarFestival.replace(/\*\d/, "")
}
}
if (this.lunarMonth == 12 && this.lunarDate == e(this.lunarYear, 12)) {
this.lunarFestival = T["0100"];
this.restDays = 1
}
this.showInLunar = (this.lunarFestival == "") ? this.showInLunar: this.lunarFestival;
this.showInLunar = (this.showInLunar.length > 4) ? this.showInLunar.substr(0, 2) + "...": this.showInLunar
}
var Q = (function() {
var X = {};
X.lines = 0;
X.dateArray = new Array(42);
function Y(a) {
return (((a % 4 === 0) && (a % 100 !== 0)) || (a % 400 === 0))
}
function G(a, b) {
return [31, (Y(a) ? 29 : 28), 31, 30, 31, 30, 31, 31, 30, 31, 30, 31][b]
}
function C(a, b) {
a.setDate(a.getDate() + b);
return a
}
function Z(a) {
var f = 0;
var c = new U(new Date(a.solarYear, a.solarMonth - 1, 1));
var d = (c.solarWeekDay - 1 == -1) ? 6 : c.solarWeekDay - 1;
X.lines = Math.ceil((d + G(a.solarYear, a.solarMonth - 1)) / 7);
for (var e = 0; e < X.dateArray.length; e++) {
if (c.restDays != 0) {
f = c.restDays
}
if (f > 0) {
c.isRest = true
}
if (d-->0 || c.solarMonth != a.solarMonth) {
X.dateArray[e] = null;
continue
}
var b = new U(new Date());
if (c.solarYear == b.solarYear && c.solarMonth == b.solarMonth && c.solarDate == b.solarDate) {
c.isToday = true
}
X.dateArray[e] = c;
c = new U(C(c.date, 1));
f--
}
}
return {
init: function(a) {
Z(a)
},
getJson: function() {
return X
}
}
})();
var W = (function() {
var C = M("top").getElementsByTagName("SELECT")[0];
var X = M("top").getElementsByTagName("SELECT")[1];
var G = M("top").getElementsByTagName("SPAN")[0];
var c = M("top").getElementsByTagName("SPAN")[1];
var Y = M("top").getElementsByTagName("INPUT")[0];
function a(g) {
G.innerHTML = g.ganzhiYear;
c.innerHTML = g.shengxiao
}
function b(g) {
C[g.solarYear - 1901].selected = true;
X[g.solarMonth - 1].selected = true
}
function f() {
var j = C.value;
var g = X.value;
var i = new U(new Date(j, g - 1, 1));
Q.init(i);
N.draw();
if (this == C) {
i = new U(new Date(j, 3, 1));
G.innerHTML = i.ganzhiYear;
c.innerHTML = i.shengxiao
}
var h = new U(new Date());
Y.style.visibility = (j == h.solarYear && g == h.solarMonth) ? "hidden": "visible"
}
function Z() {
var g = new U(new Date());
a(g);
b(g);
Q.init(g);
N.draw();
Y.style.visibility = "hidden"
}
function d(k, g) {
for (var j = 1901; j < 2050; j++) {
var h = R("OPTION");
h.value = j;
h.innerHTML = j;
if (j == k) {
h.selected = "selected"
}
C.appendChild(h)
}
for (var j = 1; j < 13; j++) {
var h = R("OPTION");
h.value = j;
h.innerHTML = j;
if (j == g) {
h.selected = "selected"
}
X.appendChild(h)
}
C.onchange = f;
X.onchange = f
}
function e(g) {
d(g.solarYear, g.solarMonth);
G.innerHTML = g.ganzhiYear;
c.innerHTML = g.shengxiao;
Y.onclick = Z;
Y.style.visibility = "hidden"
}
return {
init: function(g) {
e(g)
},
reset: function(g) {
b(g)
}
}
})();
var N = (function() {
function C() {
var Z = Q.getJson();
var c = Z.dateArray;
M("cm").style.height = Z.lines * 38 + 2 + "px";
M("cm").innerHTML = "";
for (var a = 0; a < c.length; a++) {
if (c[a] == null) {
continue
}
var X = R("DIV");
if (c[a].isToday) {
X.style.border = "1px solid #a5b9da";
X.style.background = "#c1d9ff"
}
X.className = "cell";
X.style.left = (a % 7) * 60 + "px";
X.style.top = Math.floor(a / 7) * 38 + 2 + "px";
var b = R("DIV");
b.className = "so";
// http://www.codefans.net
b.style.color = ((a % 7) > 4 || c[a].isRest) ? "#c60b02": "#313131";
b.innerHTML = c[a].solarDate;
X.appendChild(b);
var Y = R("DIV");
Y.style.color = "#666";
Y.innerHTML = c[a].showInLunar;
X.appendChild(Y);
X.onmouseover = (function(d) {
return function(f) {
F.show({
dateIndex: d,
cell: this
})
}
})(a);
X.onmouseout = function() {
F.hide()
};
M("cm").appendChild(X)
}
var G = R("DIV");
G.id = "fd";
M("cm").appendChild(G);
F.init(G)
}
return {
draw: function(G) {
C(G)
}
}
})();
var F = (function() {
var C;
function Y(e, c) {
if (arguments.length > 1) {
var b = /([.*+?^=!:${}()|[\]\/\\])/g,
Z = "{".replace(b, "\\$1"),
d = "}".replace(b, "\\$1");
var a = new RegExp("#" + Z + "([^" + Z + d + "]+)" + d, "g");
if (typeof(c) == "object") {
return e.replace(a,
function(f, h) {
var g = c[h];
return typeof(g) == "undefined" ? "": g
})
}
}
return e
}
function G(b) {
var a = Q.getJson().dateArray[b.dateIndex];
var Z = b.cell;
var c = "#{solarYear} 年 #{solarMonth} 月 #{solarDate} 日 #{solarWeekDayInChinese}";
c += "<br><b>农历 #{lunarMonthInChinese}月#{lunarDateInChinese}</b>";
c += "<br>#{ganzhiYear}年 #{ganzhiMonth}月 #{ganzhiDate}日";
if (a.solarFestival != "" || a.lunarFestival != "" || a.jieqi != "") {
c += "<br><b>#{lunarFestival} #{solarFestival} #{jieqi}</b>"
}
C.innerHTML = Y(c, a);
C.style.top = Z.offsetTop + Z.offsetHeight - 5 + "px";
C.style.left = Z.offsetLeft + Z.offsetWidth - 5 + "px";
C.style.display = "block"
}
function X() {
C.style.display = "none"
}
return {
show: function(Z) {
G(Z)
},
hide: function() {
X()
},
init: function(Z) {
C = Z
}
}
})();
var A = new U(new Date());
if (S) {
window.attachEvent("onload",
function() {
W.reset(A)
})
}
W.init(A);
Q.init(A);
N.draw();
})();
//-->
</script>

百度的Js日历,值得一看相关推荐

  1. 解决:百度编辑器UEditor,怎么将图片保存到图片服务器,或者上传到ftp服务器的问题(如果你正在用UE,这篇文章值得你看下)

    解决:百度编辑器UEditor,怎么将图片保存到图片服务器,或者上传到ftp服务器的问题(如果你正在用UE,这篇文章值得你看下) 参考文章: (1)解决:百度编辑器UEditor,怎么将图片保存到图片 ...

  2. 分享一篇写的非常好的文章《如何掌握企业级技术和项目经验》,非常值得一看!

    前言: 这是一位有17年工作经验的大佬写的一篇文章,看完真的受益匪浅,非常值得一看! 正文: 为什么我意识到学习方法的重要性了呢?因为我发现有的同学很迷茫.技术这么多,学也学不完,更不知道应该学什么? ...

  3. 高性能JavaScript(您值得一看)

    阅读目录 Javascript第一条定律:将脚本放在底部. Javascript第二条定律:将脚本成组打包. 杂谈 尽量使用局部变量来保存全局变量 尽量少去改变作用域链 尽量少去使用闭包 访问速度与成 ...

  4. 史上最强春节档来袭!Python 解读哪部影片值得一看?

    作者 | 徐麟 责编 | 郭芮 随着春节脚步的临近,想必各位都已经开始规划幸福的春节长假该如何度过.阖家团聚,探亲访友,与好久没见的好基友一起谈天说地,怼天怼地,想想都是让人感到幸福. 除此之外,每年 ...

  5. webview加载百度失败_移动AI系列百度paddle.js在助力开发智能化的微信小程序

    本文作者为百度 APP 移动研发部高级研发工程师,百度 Web 前端智能化方向主要成员.过去一段时间,曾负责百度多模视觉搜索前端业务及多模视觉搜索的前端性能优化等相关工作.划重点:文末有照片! 早在今 ...

  6. python爬取3万+条评论,解读猫眼评分9.5的《海王》是否值得一看?

    海王 前言 2018年12月7日,本年度最后一部压轴大片<海王>如期上映,目前猫眼评分达到9.5分,靠着1.5亿美金的制作成本,以小博大,目前票房接近9亿,本文爬取了猫眼3w+条评论,多方 ...

  7. 值得一看的电脑教程下载

    -=-=-=-=-=> [值得一看的电脑教程下载] 电脑技巧二○○三合集 http://www.starinfo.net.cn/photography/gif/f6/shuji/computer ...

  8. 初学者都会学习有关电控制图软件EPLAN的安装,下面有破解版本2.7,值得一看

    初学者都会学习有关电控制图软件EPLAN的安装,下面有破解版本2.7,值得一看 每一天都要开心 + 每一天都要开心 废话不多说啦,直接来看安装步骤 安装包发放在百度网盘来自取呀 建议安装我勾选的这个哦 ...

  9. 专访百度蒋凡:从RecSys2013大会看推荐系统发展新趋势

    专访百度蒋凡:从RecSys2013大会看推荐系统发展新趋势 发表于2013-10-28 11:38| 2169次阅读| 来源CSDN| 6 条评论| 作者薛梁 RecSys2013数据挖掘大数据推荐 ...

最新文章

  1. 计算机主机组装的过程,电脑主机组装需要怎样的操作流程简单至极?
  2. CCF 2016年题目题解 - Python
  3. 定位系列论文:基于行为识别的楼层定位(二):Research on HAR-Based Floor Positioning
  4. 两个不相同的类之间如果赋值
  5. HDU4666 Hyperspace(数学推理+数据结构)
  6. hibernate hql limit的实现方式
  7. 教你用一条SQL搞定跨数据库查询难题
  8. python3 collections模块 tree_第30天: Python collections 模块
  9. SSM-jsp页面放在web-INF下受保护,读取出现404页面tomcat获取不到资源-问题解决配置docBase
  10. 38. DOM 操作
  11. xsl判断节点存在_[剑指offer]25删除链表中重复的节点
  12. matlab多种显示格式一起用,[转载]MATLAB支持的几种图像文件格式
  13. Soui Button学习一
  14. messenger支持查找附近的人功能吗_玩微信,附近的人,是否双方都在查找附近的人,才能显示?...
  15. 【案例】CRM客户管理系统的登录模型
  16. 禾赛科技2022数字芯片提前批笔试
  17. IOS 应用运行环境理解
  18. MySQL数据库如何改名
  19. 黑苹果万能驱动神器 Hackintool 3.8.4中文版
  20. Typora+图床详解(小白都能学得会)

热门文章

  1. 【产品实战-乘风游旅游App】0.0 写在前面
  2. CTF之Avatar
  3. 区块链学习系列【幽灵协议】
  4. 安装教程——Stegsolve
  5. Excel禁用右键后的惊恐
  6. 关于DDD领域驱动设计的理论知识收集汇总
  7. 微信小程序如何实现版本自动更新
  8. 电力-故障录波(向量图)
  9. PHP网站配置(系统设置)数据库表结构及实现
  10. 视频信号时序驱动说明--VESA V1.0.13