中国DOS联盟论坛

中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --
联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum
游客 | 登录 | 注册 | 会员 | 搜索 | 中国DOS联盟
中国DOS联盟论坛
现在时间是 2026-08-06 18:54
48,039 主题排行 / 350,124 发帖 / 今日 0 篇 / 48,252 会员排行
DOS批处理 & 脚本技术(批处理室) » [求助]求24节气算法?(VBS)
可打印版本  941 / 2
第1楼 jmz573515 发表于 2007-12-07 19:03
银牌会员 发帖 464 积分 1,212
[求助]求24节气算法?(VBS)
上网找了半天也没有找到,不知道各位有没有知道的,谢谢!最好能写个脚本出来,输入一个日期判断是不是24节气中的一个...
第2楼 slore 发表于 2007-12-07 19:39
铂金会员 发帖 2,478 积分 5,212
下面是VB的一段,你自己看看算法,改成VBS版本的吧。
上学去了……

Option Explicit

Dim
SolarTerm(1 To 24) As String '阳历的节气
Dim sTermInfo(1 To 24) As Double '阳历节气的信息码
Public Sub SetValue()
Dim i As Integer
Dim
StrST As String, StrSTI As String
StrST = "小寒大寒立春雨水惊蛰春分清明谷雨立夏小满芒种夏至小暑大暑立秋处暑白露秋分寒露霜降立冬小雪大雪冬至"
StrSTI = "000000,021208,042467,063836,085337,107014,128867,150921,173149,195551,218072,240693,263343,285989,308563,331033,353350,375494,397447,419210,440795,462224,483532,504758"
For i = 1 To 24
SolarTerm(i) = Mid(StrST, (i - 1) * 2 + 1, 2)
sTermInfo(i) = Val(Mid(StrSTI, (i - 1) * 7 + 1, 6))
Next i
End Sub

'某y年的第n个节气的日期(从1小寒起算)
Function sTerm(ByVal Y, n As Integer) As Date
Dim
D1, D2 As Double
D1 = (31556925.9747 * (Y - 1900) + sTermInfo(n) * 60#)
D2 = DateDiff("s", "1970-1-1 0:0", "1900-1-6 2:5") + D1
D1 = D2 / 2
sTerm = DateAdd("s", D2 - D1, DateAdd("s", D1, "1970-1-1 0:0"))
sTerm = Format(sTerm, "yyyy/mm/dd")
End Function
'根据阳历返回其节气,若不是则返回空
Public Function GetTerm(ByVal sDate As Date) As String
Dim
Y, m As Integer
Y = Year(sDate)
m = Month(sDate)
GetTerm = " "
If sTerm(Y, m * 2 - 1) = sDate Then
GetTerm = SolarTerm(m * 2 - 1)
ElseIf sTerm(Y, m * 2) = sDate Then
GetTerm = SolarTerm(m * 2)
End If
End Function

Private Sub
Command1_Click()
Call SetValue
Print GetTerm(#12/7/2007#)
End Sub
第3楼 jmz573515 发表于 2007-12-08 08:03
银牌会员 发帖 464 积分 1,212
不懂VB,试着转换,总是失败:(
有劳兄弟帮忙转换下,谢谢!
[ 联系联盟系统管理团队 - 中国DOS联盟 - 标准版 ]
Sponsored by ifanr Inc | © 2001–2023