![]() |
中国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 |