function
$(e) {
return
document.getElementById(e);}
function
mygetd() {
var
sDate
=
new
Date();
//
农历
var
myd
=
new
myLunar(sDate.getFullYear(),sDate.getMonth()
+
1
,sDate.getDate());
s
=
'
今天是
'
+
myd.y
+
'
年
'
+
(myd.m
+
1
)
+
'
月
'
+
myd.d
+
'
日
'
+
'
农历
'
+
myd.LY
+
myd.LM
+
myd.LD
+
''
+
myd.LH1
+
'
'
+
myd.LH2
+
'
'
+
myd.H1
+
'
'
+
myd.H2
+
'
星期
'
+
nStr1[myd.week];
return
s;
}
//
数据
var
lunarInfo
=
new
Array(
0x04bd8
,
0x04ae0
,
0x0a570
,
0x054d5
,
0x0d260
,
0x0d950
,
0x16554
,
0x056a0
,
0x09ad0
,
0x055d2
,
0x04ae0
,
0x0a5b6
,
0x0a4d0
,
0x0d250
,
0x1d255
,
0x0b540
,
0x0d6a0
,
0x0ada2
,
0x095b0
,
0x14977
,
0x04970
,
0x0a4b0
,
0x0b4b5
,
0x06a50
,
0x06d40
,
0x1ab54
,
0x02b60
,
0x09570
,
0x052f2
,
0x04970
,
0x06566
,
0x0d4a0
,
0x0ea50
,
0x06e95
,
0x05ad0
,
0x02b60
,
0x186e3
,
0x092e0
,
0x1c8d7
,
0x0c950
,
0x0d4a0
,
0x1d8a6
,
0x0b550
,
0x056a0
,
0x1a5b4
,
0x025d0
,
0x092d0
,
0x0d2b2
,
0x0a950
,
0x0b557
,
0x06ca0
,
0x0b550
,
0x15355
,
0x04da0
,
0x0a5b0
,
0x14573
,
0x052b0
,
0x0a9a8
,
0x0e950
,
0x06aa0
,
0x0aea6
,
0x0ab50
,
0x04b60
,
0x0aae4
,
0x0a570
,
0x05260
,
0x0f263
,
0x0d950
,
0x05b57
,
0x056a0
,
0x096d0
,
0x04dd5
,
0x04ad0
,
0x0a4d0
,
0x0d4d4
,
0x0d250
,
0x0d558
,
0x0b540
,
0x0b6a0
,
0x195a6
,
0x095b0
,
0x049b0
,
0x0a974
,
0x0a4b0
,
0x0b27a
,
0x06a50
,
0x06d40
,
0x0af46
,
0x0ab60
,
0x09570
,
0x04af5
,
0x04970
,
0x064b0
,
0x074a3
,
0x0ea50
,
0x06b58
,
0x055c0
,
0x0ab60
,
0x096d5
,
0x092e0
,
0x0c960
,
0x0d954
,
0x0d4a0
,
0x0da50
,
0x07552
,
0x056a0
,
0x0abb7
,
0x025d0
,
0x092d0
,
0x0cab5
,
0x0a950
,
0x0b4a0
,
0x0baa4
,
0x0ad50
,
0x055d9
,
0x04ba0
,
0x0a5b0
,
0x15176
,
0x052b0
,
0x0a930
,
0x07954
,
0x06aa0
,
0x0ad50
,
0x05b52
,
0x04b60
,
0x0a6e6
,
0x0a4e0
,
0x0d260
,
0x0ea65
,
0x0d530
,
0x05aa0
,
0x076a3
,
0x096d0
,
0x04bd7
,
0x04ad0
,
0x0a4d0
,
0x1d0b6
,
0x0d250
,
0x0d520
,
0x0dd45
,
0x0b5a0
,
0x056d0
,
0x055b2
,
0x049b0
,
0x0a577
,
0x0a4b0
,
0x0aa50
,
0x1b255
,
0x06d20
,
0x0ada0
,
0x14b63
);
var
Gan
=
new
Array(
"
甲
"
,
"
乙
"
,
"
丙
"
,
"
丁
"
,
"
戊
"
,
"
己
"
,
"
庚
"
,
"
辛
"
,
"
壬
"
,
"
癸
"
);
var
Zhi
=
new
Array(
"
子
"
,
"
丑
"
,
"
寅
"
,
"
卯
"
,
"
辰
"
,
"
巳
"
,
"
午
"
,
"
未
"
,
"
申
"
,
"
酉
"
,
"
戌
"
,
"
亥
"
);
var
nStr1
=
new
Array(
'
日
'
,
'
一
'
,
'
二
'
,
'
三
'
,
'
四
'
,
'
五
'
,
'
六
'
,
'
七
'
,
'
八
'
,
'
九
'
,
'
十
'
,
'
十一
'
,
'
腊
'
);
var
nStr2
=
new
Array(
'
初
'
,
'
十
'
,
'
廿
'
,
'
卅
'
,
'
□
'
);
var
solarTerm
=
new
Array(
"
小寒
"
,
"
大寒
"
,
"
立春
"
,
"
雨水
"
,
"
惊蛰
"
,
"
春分
"
,
"
清明
"
,
"
谷雨
"
,
"
立夏
"
,
"
小满
"
,
"
芒种
"
,
"
夏至
"
,
"
小暑
"
,
"
大暑
"
,
"
立秋
"
,
"
处暑
"
,
"
白露
"
,
"
秋分
"
,
"
寒露
"
,
"
霜降
"
,
"
立冬
"
,
"
小雪
"
,
"
大雪
"
,
"
冬至
"
);
var
sTermInfo
=
new
Array(
0
,
21208
,
42467
,
63836
,
85337
,
107014
,
128867
,
150921
,
173149
,
195551
,
218072
,
240693
,
263343
,
285989
,
308563
,
331033
,
353350
,
375494
,
397447
,
419210
,
440795
,
462224
,
483532
,
504758
);
//
国历节日 *表示放假日
var
solarMonth
=
new
Array(
31
,
28
,
31
,
30
,
31
,
30
,
31
,
31
,
30
,
31
,
30
,
31
);
var
sFtv
=
new
Array(
"
0101*元旦节
"
,
"
0202 世界湿地日
"
,
"
0210 国际气象节
"
,
"
0214 情人节
"
,
"
0301 国际海豹日
"
,
"
0303 全国爱耳日
"
,
"
0305 学雷锋纪念日
"
,
"
0308 妇女节
"
,
"
0312 植树节 孙中山逝世纪念日
"
,
"
0314 国际警察日
"
,
"
0315 消费者权益日
"
,
"
0317 中国国医节 国际航海日
"
,
"
0321 世界森林日 消除种族歧视国际日 世界儿歌日
"
,
"
0322 世界水日
"
,
"
0323 世界气象日
"
,
"
0324 世界防治结核病日
"
,
"
0325 全国中小学生安全教育日
"
,
"
0330 巴勒斯坦国土日
"
,
"
0401 愚人节 全国爱国卫生运动月(四月) 税收宣传月(四月)
"
,
"
0407 世界卫生日
"
,
"
0422 世界地球日
"
,
"
0423 世界图书和版权日
"
,
"
0424 亚非新闻工作者日
"
,
"
0501*劳动节
"
,
"
0502*劳动节假日
"
,
"
0503*劳动节假日
"
,
"
0504 青年节
"
,
"
0505 碘缺乏病防治日
"
,
"
0508 世界红十字日
"
,
"
0512 国际护士节
"
,
"
0515 国际家庭日
"
,
"
0517 国际电信日
"
,
"
0518 国际博物馆日
"
,
"
0520 全国学生营养日
"
,
"
0523 国际牛奶日
"
,
"
0531 世界无烟日
"
,
"
0601 国际儿童节
"
,
"
0605 世界环境保护日
"
,
"
0606 全国爱眼日
"
,
"
0617 防治荒漠化和干旱日
"
,
"
0623 国际奥林匹克日
"
,
"
0625 全国土地日
"
,
"
0626 国际禁毒日
"
,
"
0701 香港回归纪念日 中共诞辰 世界建筑日
"
,
"
0702 国际体育记者日
"
,
"
0707 抗日战争纪念日
"
,
"
0711 世界人口日
"
,
"
0730 非洲妇女日
"
,
"
0801 建军节
"
,
"
0808 中国男子节(爸爸节)
"
,
"
0815 抗日战争胜利纪念
"
,
"
0908 国际扫盲日 国际新闻工作者日
"
,
"
0909 毛泽东逝世纪念
"
,
"
0910 中国教师节
"
,
"
0914 世界清洁地球日
"
,
"
0916 国际臭氧层保护日
"
,
"
0918 九·一八事变纪念日
"
,
"
0920 国际爱牙日
"
,
"
0927 世界旅游日
"
,
"
0928 孔子诞辰
"
,
"
1001*国庆节 世界音乐日 国际老人节
"
,
"
1002*国庆节假日 国际和平与民主自由斗争日
"
,
"
1003*国庆节假日
"
,
"
1004 世界动物日
"
,
"
1006 老人节
"
,
"
1008 全国高血压日 世界视觉日
"
,
"
1009 世界邮政日 万国邮联日
"
,
"
1010 辛亥革命纪念日 世界精神卫生日
"
,
"
1013 世界保健日 国际教师节
"
,
"
1014 世界标准日
"
,
"
1015 国际盲人节(白手杖节)
"
,
"
1016 世界粮食日
"
,
"
1017 世界消除贫困日
"
,
"
1022 世界传统医药日
"
,
"
1024 联合国日
"
,
"
1031 世界勤俭日
"
,
"
1107 十月社会主义革命纪念日
"
,
"
1108 中国记者日
"
,
"
1109 全国消防安全宣传教育日
"
,
"
1110 世界青年节
"
,
"
1111 国际科学与和平周(本日所属的一周)
"
,
"
1112 孙中山诞辰纪念日
"
,
"
1114 世界糖尿病日
"
,
"
1117 国际大学生节 世界学生节
"
,
"
1120*彝族年
"
,
"
1121*彝族年 世界问候日 世界电视日
"
,
"
1122*彝族年
"
,
"
1129 国际声援巴勒斯坦人民国际日
"
,
"
1201 世界艾滋病日
"
,
"
1203 世界残疾人日
"
,
"
1205 国际经济和社会发展志愿人员日
"
,
"
1208 国际儿童电视日
"
,
"
1209 世界足球日
"
,
"
1210 世界人权日
"
,
"
1212 西安事变纪念日
"
,
"
1213 南京大屠杀(1937年)纪念日!紧记血泪史!
"
,
"
1220 澳门回归纪念
"
,
"
1221 国际篮球日
"
,
"
1224 平安夜
"
,
"
1225 圣诞节
"
,
"
1226 毛泽东诞辰纪念
"
)
//
农历节日 *表示放假日
var
lFtv
=
new
Array(
"
0101*春节
"
,
"
0102*初二
"
,
"
0103*初三
"
,
"
0115 元宵节
"
,
"
0505 端午节
"
,
"
0707 七夕情人节
"
,
"
0715 中元节
"
,
"
0815 中秋节
"
,
"
0909 重阳节
"
,
"
1208 腊八节
"
,
"
1223 小年
"
,
"
0100 除夕
"
)
//
某月的第几个星期几
var
wFtv
=
new
Array(
"
0150 世界麻风日
"
,
//
一月的最后一个星期日(月倒数第一个星期日)
"
0520 国际母亲节
"
,
"
0530 全国助残日
"
,
"
0630 父亲节
"
,
"
0730 被奴役国家周
"
,
"
0932 国际和平日
"
,
"
0940 国际聋人节 世界儿童日
"
,
"
0950 世界海事日
"
,
"
1011 国际住房日
"
,
"
1013 国际减轻自然灾害日(减灾日)
"
,
"
1144 感恩节
"
)
//
调用数据函数
function
k_month(month,day,isLeap,LL) {
t
=
((month
==
1
)
?
'
元
'
:nStr1[month])
+
'
月
'
;
if
(isLeap) t
=
'
闰
'
+
t;
if
(month
==
12
&&
day
==
LL) t
=
'
大年
'
;
if
(month
==
1
&&
day
<=
7
) t
=
'
大年
'
;
return
t;
}
function
k_day(t) {
if
(t
==
10
) t1
=
'
初十
'
;
else
if
(t
==
20
) t1
=
'
二十
'
;
else
if
(t
==
30
) t1
=
'
三十
'
;
else
t1
=
nStr2[Math.floor(t
/
10
)]
+
nStr1[t
%
10
];
return
t1;
}
function
k_lh2(y,m,d) {
t1
=
sTerm(y,m
*
2
);
if
(t1
==
d)
return
solarTerm[m
*
2
];
t1
=
sTerm(y,m
*
2
+
1
);
if
(t1
==
d)
return
solarTerm[m
*
2
+
1
];
return
''
;
}
function
k_lh1(month,day,LL) {
var
s
=
''
;
//
农历节日
if
(month
==
12
&&
day
==
LL) s
=
"
除夕
"
;
else
for
(i
in
lFtv)
if
(lFtv[i].match(
/^
(d{
2
})(.{
2
})([s
*
])(.
+
)$
/
)) {
if
(Number(RegExp.$
1
)
==
month
&&
Number(RegExp.$
2
)
==
day) {
s
=
RegExp.$
4
;
//
if(RegExp.$3=='*') this[tmp2].color = 'red';
}
}
return
s;
}
function
k_h1(m,d) {
var
s
=
''
;
//
公历节日
for
(i
in
sFtv)
if
(sFtv[i].match(
/^
(d{
2
})(d{
2
})([s
*
])(.
+
)$
/
))
if
(Number(RegExp.$
1
)
==
(m
+
1
)
&&
Number(RegExp.$
2
)
==
d) {
s
=
RegExp.$
4
;
//
if(RegExp.$3=='*') this[Number(RegExp.$2)-1].color = 'red';
}
return
s;
}
function
k_h2(m,d,firstWeek,length) {
var
s
=
''
;
//
月周节日
for
(i
in
wFtv)
if
(wFtv[i].match(
/^
(d{
2
})(d)(d)([s
*
])(.
+
)$
/
))
if
(Number(RegExp.$
1
)
==
(m
+
1
)) {
t1
=
Number(RegExp.$
2
);
t2
=
Number(RegExp.$
3
);
if
(t1
<
5
)
t3
=
((firstWeek
>
t2)
?
7
:
0
)
+
7
*
(t1
-
1
)
+
t2
-
firstWeek
+
1
;
else
{
t1
-=
5
;
t3
=
(firstWeek
+
length
-
1
)
%
7
;
//
当月最后一天星期?
t3
=
length
-
t3
-
7
*
t1
+
t2
-
(t2
>
t3
?
7
:
0
);
}
if
(t3
==
d) s
=
RegExp.$
5
;
//
s+=t3;
}
return
s;
}
//
==============================返回公历 y年某m+1月的天数
function
solarDays(y,m) {
if
(m
==
1
)
return
(((y
%
4
==
0
)
&&
(y
%
100
!=
0
)
||
(y
%
400
==
0
))
?
29
:
28
);
else
return
(solarMonth[m]);
}
//
===== 某年的第n个节气为几日(从0小寒起算)
function
sTerm(y,n) {
var
offDate
=
new
Date( (
31556925974.7
*
(y
-
1900
)
+
sTermInfo[n]
*
60000
)
+
Date.UTC(
1900
,
0
,
6
,
2
,
5
) );
return
(offDate.getUTCDate());
}
//
============================== 传入 offset 返回干支, 0=甲子
function
cyclical(num) {
return
(Gan[num
%
10
]
+
Zhi[num
%
12
]);
}
//
====================================== 返回农历 y年的总天数
function
lYearDays(y) {
var
i, sum
=
348
;
for
(i
=
0x8000
; i
>
0x8
; i
>>=
1
) sum
+=
(lunarInfo[y
-
1900
]
&
i)
?
1
:
0
;
return
(sum
+
leapDays(y));
}
//
====================================== 返回农历 y年闰月的天数
function
leapDays(y) {
if
(leapMonth(y))
return
((lunarInfo[y
-
1900
]
&
0x10000
)
?
30
:
29
);
else
return
(
0
);
}
//
====================================== 返回农历 y年闰哪个月 1-12 , 没闰返回 0
function
leapMonth(y) {
return
(lunarInfo[y
-
1900
]
&
0xf
);
}
//
====================================== 返回农历 y年m月的总天数
function
monthDays(y,m) {
return
( (lunarInfo[y
-
1900
]
&
(
0x10000
>>
m))
?
30
:
29
);
}
//
====================================== 传入日期, 返回农历日期控件
/*
该控件属性有 公历年月日星期.y .m .d .week;
公历当月天数.length;
公历当月一日星期.firstWeek
农历年月日(汉字方式).LY .LM .LD
农历年月日(数字方式).year .month .day
农历是否闰月.isLeap
农历农历当月天数.LL
农历节日.LH1
农历二十四节气.LH2
公历节日.H1
公历月周节日.H2
*/
function
myLunar(y,m,d) {
var
i, leap
=
0
, temp
=
0
;
//
公历年月日星期
objDate
=
new
Date(y,m
-
1
,d);
this
.y
=
objDate.getFullYear();
this
.m
=
objDate.getMonth();
this
.d
=
objDate.getDate();
this
.week
=
objDate.getDay();
//
公历当月天数
this
.length
=
solarDays(
this
.y,
this
.m);
//
公历当月1日星期几
sDObj
=
new
Date(
this
.y,
this
.m,
1
,
0
,
0
,
0
,
0
);
this
.firstWeek
=
sDObj.getDay();
//
农历年月日(数字方式)及是否闰月
var
offset
=
(Date.UTC(
this
.y,
this
.m,
this
.d)
-
Date.UTC(
1900
,
0
,
31
))
/
86400000
;
for
(i
=
1900
; i
<
2050
&&
offset
>
0
; i
++
) { temp
=
lYearDays(i); offset
-=
temp; }
if
(offset
<
0
) { offset
+=
temp; i
--
; }
this
.year
=
i;
leap
=
leapMonth(i);
//
闰哪个月
this
.isLeap
=
false
;
for
(i
=
1
; i
<
13
&&
offset
>
0
; i
++
) {
//
闰月
if
(leap
>
0
&&
i
==
(leap
+
1
)
&&
this
.isLeap
==
false
) {
--
i;
this
.isLeap
=
true
; temp
=
leapDays(
this
.year);
}
else
{ temp
=
monthDays(
this
.year, i); }
//
解除闰月
if
(
this
.isLeap
==
true
&&
i
==
(leap
+
1
))
this
.isLeap
=
false
;
offset
-=
temp;
}
if
(offset
==
0
&&
leap
>
0
&&
i
==
leap
+
1
)
if
(
this
.isLeap) {
this
.isLeap
=
false
; }
else
{
this
.isLeap
=
true
;
--
i; }
if
(offset
<
0
){ offset
+=
temp;
--
i; }
this
.month
=
i;
this
.day
=
offset
+
1
;
//
农历当月最后一天
this
.LL
=
this
.isLeap
?
leapDays(
this
.year): monthDays(
this
.year,
this
.month);
//
节气与节日
this
.LH1
=
k_lh1(
this
.month,
this
.day,
this
.LL);
this
.LH2
=
k_lh2(
this
.y,
this
.m,
this
.d);
this
.H1
=
k_h1(
this
.m,
this
.d);
this
.H2
=
k_h2(
this
.m,
this
.d,
this
.firstWeek,
this
.length);
//
农历年月日(汉字方式)
this
.LY
=
cyclical(
this
.year
-
1900
+
36
)
+
'
年
'
;
this
.LM
=
k_month(
this
.month,
this
.day,
this
.isLeap,
this
.LL);
this
.LD
=
k_day(
this
.day);
}