可显示农历的VBS+JS代码:

本文提供了两种实现农历日期转换的代码示例:一种是使用VBS(VBScript)编写的,另一种是使用JavaScript编写的。VBS代码通过复杂的逻辑计算来获取当前系统的农历日期、天干地支等信息;而JavaScript代码则通过一系列数组和条件判断来实现类似的功能。

显示农历的VBS代码:

<script language=vbscript>
Function nl()
'获取当前系统时间
curTime = Now()
Dim WeekName(7), MonthAdd(11), NongliData(99), TianGan(9), DiZhi(11), ShuXiang(11), DayName(30), MonName(12)
'星期名
WeekName(0= " * "
WeekName(
1= "星期日"
WeekName(
2= "星期一"
WeekName(
3= "星期二"
WeekName(
4= "星期三"
WeekName(
5= "星期四"
WeekName(
6= "星期五"
WeekName(
7= "星期六"

'天干名称
TianGan(0= ""
TianGan(
1= ""
TianGan(
2= ""
TianGan(
3= ""
TianGan(
4= ""
TianGan(
5= ""
TianGan(
6= ""
TianGan(
7= ""
TianGan(
8= ""
TianGan(
9= ""

'地支名称
DiZhi(0= ""
DiZhi(
1= ""
DiZhi(
2= ""
DiZhi(
3= ""
DiZhi(
4= ""
DiZhi(
5= ""
DiZhi(
6= ""
DiZhi(
7= ""
DiZhi(
8= ""
DiZhi(
9= ""
DiZhi(
10= ""
DiZhi(
11= ""
'属相名称
ShuXiang(0= ""
ShuXiang(
1= ""
ShuXiang(
2= ""
ShuXiang(
3= ""
ShuXiang(
4= ""
ShuXiang(
5= ""
ShuXiang(
6= ""
ShuXiang(
7= ""
ShuXiang(
8= ""
ShuXiang(
9= ""
ShuXiang(
10= ""
ShuXiang(
11= ""
'农历日期名
DayName(0= "*"
DayName(
1= "初一"
DayName(
2= "初二"
DayName(
3= "初三"
DayName(
4= "初四"
DayName(
5= "初五"
DayName(
6= "初六"
DayName(
7= "初七"
DayName(
8= "初八"
DayName(
9= "初九"
DayName(
10= "初十"
DayName(
11= "十一"
DayName(
12= "十二"
DayName(
13= "十三"
DayName(
14= "十四"
DayName(
15= "十五"
DayName(
16= "十六"
DayName(
17= "十七"
DayName(
18= "十八"
DayName(
19= "十九"
DayName(
20= "二十"
DayName(
21= "廿一"
DayName(
22= "廿二"
DayName(
23= "廿三"
DayName(
24= "廿四"
DayName(
25= "廿五"
DayName(
26= "廿六"
DayName(
27= "廿七"
DayName(
28= "廿八"
DayName(
29= "廿九"
DayName(
30= "三十"
'农历月份名
MonName(0= "*"
MonName(
1= ""
MonName(
2= ""
MonName(
3= ""
MonName(
4= ""
MonName(
5= ""
MonName(
6= ""
MonName(
7= ""
MonName(
8= ""
MonName(
9= ""
MonName(
10= ""
MonName(
11= "十一"
MonName(
12= ""
'公历每月前面的天数
MonthAdd(0= 0
MonthAdd(
1= 31
MonthAdd(
2= 59
MonthAdd(
3= 90
MonthAdd(
4= 120
MonthAdd(
5= 151
MonthAdd(
6= 181
MonthAdd(
7= 212
MonthAdd(
8= 243
MonthAdd(
9= 273
MonthAdd(
10= 304
MonthAdd(
11= 334
'农历数据
NongliData(0= 2635
NongliData(
1= 333387
NongliData(
2= 1701
NongliData(
3= 1748
NongliData(
4= 267701
NongliData(
5= 694
NongliData(
6= 2391
NongliData(
7= 133423
NongliData(
8= 1175
NongliData(
9= 396438
NongliData(
10= 3402
NongliData(
11= 3749
NongliData(
12= 331177
NongliData(
13= 1453
NongliData(
14= 694
NongliData(
15= 201326
NongliData(
16= 2350
NongliData(
17= 465197
NongliData(
18= 3221
NongliData(
19= 3402
NongliData(
20= 400202
NongliData(
21= 2901
NongliData(
22= 1386
NongliData(
23= 267611
NongliData(
24= 605
NongliData(
25= 2349
NongliData(
26= 137515
NongliData(
27= 2709
NongliData(
28= 464533
NongliData(
29= 1738
NongliData(
30= 2901
NongliData(
31= 330421
NongliData(
32= 1242
NongliData(
33= 2651
NongliData(
34= 199255
NongliData(
35= 1323
NongliData(
36= 529706
NongliData(
37= 3733
NongliData(
38= 1706
NongliData(
39= 398762
NongliData(
40= 2741
NongliData(
41= 1206
NongliData(
42= 267438
NongliData(
43= 2647
NongliData(
44= 1318
NongliData(
45= 204070
NongliData(
46= 3477
NongliData(
47= 461653
NongliData(
48= 1386
NongliData(
49= 2413
NongliData(
50= 330077
NongliData(
51= 1197
NongliData(
52= 2637
NongliData(
53= 268877
NongliData(
54= 3365
NongliData(
55= 531109
NongliData(
56= 2900
NongliData(
57= 2922
NongliData(
58= 398042
NongliData(
59= 2395
NongliData(
60= 1179
NongliData(
61= 267415
NongliData(
62= 2635
NongliData(
63= 661067
NongliData(
64= 1701
NongliData(
65= 1748
NongliData(
66= 398772
NongliData(
67= 2742
NongliData(
68= 2391
NongliData(
69= 330031
NongliData(
70= 1175
NongliData(
71= 1611
NongliData(
72= 200010
NongliData(
73= 3749
NongliData(
74= 527717
NongliData(
75= 1452
NongliData(
76= 2742
NongliData(
77= 332397
NongliData(
78= 2350
NongliData(
79= 3222
NongliData(
80= 268949
NongliData(
81= 3402
NongliData(
82= 3493
NongliData(
83= 133973
NongliData(
84= 1386
NongliData(
85= 464219
NongliData(
86= 605
NongliData(
87= 2349
NongliData(
88= 334123
NongliData(
89= 2709
NongliData(
90= 2890
NongliData(
91= 267946
NongliData(
92= 2773
NongliData(
93= 592565
NongliData(
94= 1210
NongliData(
95= 2651
NongliData(
96= 395863
NongliData(
97= 1323
NongliData(
98= 2707
NongliData(
99= 265877
'生成当前公历年、月、日 ==> GongliStr
curYear = Year(curTime)
curMonth 
= Month(curTime)
curDay 
= Day(curTime)
GongliStr 
= curYear & ""
If (curMonth < 10Then
    GongliStr 
= GongliStr & "0" & curMonth & ""
Else
    GongliStr 
= GongliStr & curMonth & ""
End If
If (curDay < 10Then
    GongliStr 
= GongliStr & "0" & curDay & ""
Else
    GongliStr 
= GongliStr & curDay & ""
End If
'生成当前公历星期 ==> WeekdayStr
curWeekday = Weekday(curTime)
WeekdayStr 
= WeekName(curWeekday)
'计算到初始时间1921年2月8日的天数:1921-2-8(正月初一)
TheDate = (curYear - 1921* 365 + Int((curYear - 1921/ 4+ curDay + MonthAdd(curMonth - 1- 38
If ((curYear Mod 4= 0 And curMonth > 2Then
    TheDate 
= TheDate + 1
End If
'计算农历天干、地支、月、日
isEnd = 0
= 0
Do
    
If (NongliData(m) < 4095Then
        k 
= 11
    
Else
        k 
= 12
    
End If
    n 
= k
    
Do
        
If (n < 0Then
            
Exit Do
        
End If
    
'获取NongliData(m)的第n个二进制位的值
    bit = NongliData(m)
    
For i = 1 To n Step 1
        bit 
= Int(bit / 2)
    
Next
    bit 
= bit Mod 2
    
If (TheDate <= 29 + bit) Then
        isEnd 
= 1
        
Exit Do
    
End If
    TheDate 
= TheDate - 29 - bit
    n 
= n - 1
  
Loop
  
If (isEnd = 1Then
      
Exit Do
  
End If
  m 
= m + 1
Loop
curYear 
= 1921 + m
curMonth 
= k - n + 1
curDay 
= TheDate
If (k = 12Then
    
If (curMonth = (Int(NongliData(m) / 65536+ 1)) Then
        curMonth 
= 1 - curMonth
    
ElseIf (curMonth > (Int(NongliData(m) / 65536+ 1)) Then
        curMonth 
= curMonth - 1
    
End If
End If
'生成农历天干、地支、属相 ==> NongliStr
NongliStr = "农历" & TianGan(((curYear - 4Mod 60Mod 10& DiZhi(((curYear - 4Mod 60Mod 12& ""
NongliStr 
= NongliStr & "(" & ShuXiang(((curYear - 4Mod 60Mod 12& ")"
'生成农历月、日 ==> NongliDayStr
If (curMonth < 1Then
    NongliDayStr 
= "" & MonName(-1 * curMonth)
Else
    NongliDayStr 
= MonName(curMonth)
End If
NongliDayStr 
= NongliDayStr & ""
NongliDayStr 
= NongliDayStr & DayName(curDay)
nl 
= NongliStr & NongliDayStr
End Function
msgbox nl
</script>
 

阴历的JS代码:

<script language="JavaScript">
<!--
var bsYear;  
var bsDate;  
var bsWeek;  
var arrLen=8;    //数组长度
var sValue=0;    //当年的秒数
var dayiy=0;    //当年第几天
var miy=0;    //月份的下标
var iyear=0;    //年份标记
var dayim=0;    //当月第几天
var spd=86400;    //每天的秒数

var year1999="30;29;29;30;29;29;30;29;30;30;30;29";    //354
var year2000="30;30;29;29;30;29;29;30;29;30;30;29";    //354
var year2001="30;30;29;30;29;30;29;29;30;29;30;29;30";    //384
var year2002="30;30;29;30;29;30;29;29;30;29;30;29";    //354
var year2003="30;30;29;30;30;29;30;29;29;30;29;30";    //355
var year2004="29;30;29;30;30;29;30;29;30;29;30;29;30";    //384
var year2005="29;30;29;30;29;30;30;29;30;29;30;29";    //354
var year2006="30;29;30;29;30;30;29;29;30;30;29;29;30";

var month1999="正月;二月;三月;四月;五月;六月;七月;八月;九月;十月;十一月;十二月"
var month2001="正月;二月;三月;四月;闰四月;五月;六月;七月;八月;九月;十月;十一月;十二月"
var month2004="正月;二月;闰二月;三月;四月;五月;六月;七月;八月;九月;十月;十一月;十二月"
var month2006="正月;二月;三月;四月;五月;六月;七月;闰七月;八月;九月;十月;十一月;十二月"
var Dn="初一;初二;初三;初四;初五;初六;初七;初八;初九;初十;十一;十二;十三;十四;十五;十六;十七;十八;十九;二十;廿一;廿二;廿三;廿四;廿五;廿六;廿七;廿八;廿九;三十";

var Ys=new Array(arrLen);
Ys[
0]=919094400;Ys[1]=949680000;Ys[2]=980265600;
Ys[
3]=1013443200;Ys[4]=1044028800;Ys[5]=1074700800;
Ys[
6]=1107878400;Ys[7]=1138464000;

var Yn=new Array(arrLen);   //农历年的名称
Yn[0]="己卯年";Yn[1]="庚辰年";Yn[2]="辛巳年";
Yn[
3]="壬午年";Yn[4]="癸未年";Yn[5]="甲申年";
Yn[
6]="乙酉年";Yn[7]="丙戌年"
var D=new Date();
var yy=D.getYear();
var mm=D.getMonth()+1;
var dd=D.getDate();
var ww=D.getDay();
if (ww==0) ww="<font color=RED>星期日";
if (ww==1) ww="星期一";
if (ww==2) ww="星期二";
if (ww==3) ww="星期三";
if (ww==4) ww="星期四";
if (ww==5) ww="星期五";
if (ww==6) ww="<font color=RED>星期六";
ww
=ww;
var ss=parseInt(D.getTime() / 1000);
if (yy<100) yy="19"+yy;

for (I=0;I<arrLen;I++)
    
if (ss>=Ys[I]){
        iyear
=I;
        sValue
=ss-Ys[I];    //当年的秒数
        }

dayiy
=parseInt(sValue/spd)+1;    //当年的天数

var dpm=year1999;
if (iyear==1) dpm=year2000;
if (iyear==2) dpm=year2001;
if (iyear==3) dpm=year2002;
if (iyear==4) dpm=year2003;
if (iyear==5) dpm=year2004;
if (iyear==6) dpm=year2005;
if (iyear==7) dpm=year2006;
dpm
=dpm.split(";");

var Mn=month1999;
if (iyear==2) Mn=month2001;
if (iyear==5) Mn=month2004;
if (iyear==7) Mn=month2006;
Mn
=Mn.split(";");

var Dn="初一;初二;初三;初四;初五;初六;初七;初八;初九;初十;十一;十二;十三;十四;十五;十六;十七;十八;十九;二十;廿一;廿二;廿三;廿四;廿五;廿六;廿七;廿八;廿九;三十";
Dn
=Dn.split(";");

dayim
=dayiy;

var total=new Array(13);
total[
0]=parseInt(dpm[0]);
for (I=1;I<dpm.length-1;I++) total[I]=parseInt(dpm[I])+total[I-1];
for (I=dpm.length-1;I>0;I--)
    
if (dayim>total[I-1]){
        dayim
=dayim-total[I-1];
        miy
=I;
        }

bsWeek
=ww;
bsDate
=yy+""+mm+"";
bsDate2
=dd;
bsYear
="农历"+Yn[iyear];
bsYear2
=Mn[miy]+Dn[dayim-1];
if (ss>=Ys[7]||ss<Ys[0]) bsYear=Yn[7];
function CAL(){
document.write(
"<table border='1' cellspacing='3' width='90' bordercolor='#000000' bgcolor='#FFFFFF' height='110' cellpadding='2'");
document.write(
"<tr><td align='center'><b><font color=#008040>"+bsDate+"</font><br><font face='Arial' size='6' color=#FF8040>"+bsDate2+"</font><br><font color=#008040><span style='FONT-SIZE: 10.5pt'>");
document.write(bsWeek
+"</span><br>"+"<br></b><font color=#9B4E00>");
document.write(bsYear
+"<br>"+bsYear2+"</td></tr></table>");
}

//-->
</script>
          
<script language="javascript">CAL();</script>
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值