当前位置: 移动技术网 > IT编程>脚本编程>VBScript > 提供个可以显示农历的VBS代码

提供个可以显示农历的VBS代码

2017年12月12日  | 移动技术网IT编程  | 我要评论

胡某程,kingboo网易博客,毛小平 汤灿

复制代码 代码如下:

<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 < 10) then
    gonglistr = gonglistr & "0" & curmonth & "月"
else
    gonglistr = gonglistr & curmonth & "月"
end if
if (curday < 10) then
    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 > 2) then
    thedate = thedate + 1
end if
'计算农历天干、地支、月、日
isend = 0
m = 0
do
    if (nonglidata(m) < 4095) then
        k = 11
    else
        k = 12
    end if
    n = k
    do
        if (n < 0) then
            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 = 1) then
      exit do
  end if
  m = m + 1
loop
curyear = 1921 + m
curmonth = k - n + 1
curday = thedate
if (k = 12) then
    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 - 4) mod 60) mod 10) & dizhi(((curyear - 4) mod 60) mod 12) & "年"
nonglistr = nonglistr & "(" & shuxiang(((curyear - 4) mod 60) mod 12) & ")"
'生成农历月、日 ==> nonglidaystr
if (curmonth < 1) then
    nonglidaystr = "闰" & monname(-1 * curmonth)
else
    nonglidaystr = monname(curmonth)
end if
nonglidaystr = nonglidaystr & "月"
nonglidaystr = nonglidaystr & dayname(curday)
nl = nonglistr & nonglidaystr
end function
msgbox nl
</script>

如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复

相关文章:

验证码:
移动技术网