批处理之家's Archiver

batman 发表于 2013-9-8 23:54

VBS计算指定经纬度地区当天日落时间

前言:
    算法公式是foxjl从网上找来的,本人只是将这种算法用VBS实现而已,没有什么技术含量,也不敢妄称原创。
    代码中的经度和纬度是本人所在地株洲市的,时区是东8区,大家可以修改这三个变量的值来计算各地的日落时间。[code]
Dim JD, WD, Days, SunDown, TimeArea, X, ACOS, Arr, Today
JD = 113.8 '经度,东为正西为负,我国都是东经
WD = 27.55 '纬度,北为正南为负,我国都是北纬
TimeArea = 8 '时区,东正西负,我国有东九、东八、东七、东六、东五五个时区
TodAy = Year(Now) & "年" & Month(Now) & "月" & Day(Now) & "日"
Days = DateDiff("d", Year(Now) & "-1-1 00:00:00", Now) + 1
X = -TAN(-23.4*COS(2*3.14*(Days+9)/365)*3.14/180)*TAN(WD*3.14/180)
ACOS = Atn(-X / Sqr(-X * X + 1)) + 2 * Atn(1)
SunDown = Round(24*(1+(TimeArea*15-JD)/180)-24*(180+TimeArea*15-JD-ACOS*180/3.14)/360, 2)
Arr = Split(SunDown, ".")
SunDown = Arr(0) & ":" & Int((0&"."&Int(Arr(1)))*60)
WScript.Echo "本地" & Today & "的日落时间为:" & SunDown
[/code]

foxJL 发表于 2013-9-9 10:16

我帮你把这个贴子移到原创区了。
谁敢说他写的所有算法都是自己原创的,况且我看过别人用其它高级语言写的代码,那都是成十上百行了,像你这么简洁的几乎没有。

1078292299 发表于 2021-2-24 10:04

那日出时间怎么加进去?

页: [1]

Powered by Discuz! Archiver 7.2  © 2001-2009 Comsenz Inc.