| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1376 人关注过本帖
标题:VBS计算指定经纬度地区当天日落时间
只看楼主 加入收藏
yuma
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:银河系
等 级:贵宾
威 望:37
帖 子:1925
专家分:2992
注 册:2009-12-22
结帖率:89.13%
收藏
 问题点数:0 回复次数:13 
VBS计算指定经纬度地区当天日落时间
转载自:http://www.

前言:
    算法公式是foxjl从网上找来的,本人只是将这种算法用VBS实现而已,没有什么技术含量,也不敢妄称原创。
    代码中的经度和纬度是本人所在地株洲市的,时区是东8区,大家可以修改这三个变量的值来计算各地的日落时间。

程序代码:
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


只能算出日落时间,哪位大神懂日出日落算法,给日出时间加入进去,谢谢!
搜索更多相关主题的帖子: VBS 时间 算法 指定 计算 
2022-12-11 10:27
mrexcel
Rank: 6Rank: 6
等 级:贵宾
威 望:22
帖 子:126
专家分:480
注 册:2022-11-3
收藏
得分:0 
可参考 https://zhuanlan.
2022-12-12 00:04
yuma
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:银河系
等 级:贵宾
威 望:37
帖 子:1925
专家分:2992
注 册:2009-12-22
收藏
得分:0 
回复 2楼 mrexcel
我要是能看的懂这代数式那就历害了。

心生万象,万象皆程序!
本人计算机知识网:http://bbs.为防伸手党,本站已停止会员注册。
2022-12-12 10:19
mrexcel
Rank: 6Rank: 6
等 级:贵宾
威 望:22
帖 子:126
专家分:480
注 册:2022-11-3
收藏
得分:0 
程序代码:
Function Suntime(ByVal lon As Single, ByVal lat As Single) As String
Dim Days&, X As Single, s(1)
Days = Date - DateSerial(Year(Date), 1, 0)
X = -Tan(-23.4 * Cos(8 * Atn(1) * (Days + 9) / 365) * Atn(1) / 45) * Tan(lat * Atn(1) / 45)
X = Atn(-X / Sqr(-X * X + 1)) + 2 * Atn(1)
s(0) = 4 * (300 - lon - X * 45 / Atn(1))
s(1) = 8 * (300 - lon) - s(0)
Suntime = "日出时间为:" & Format(TimeSerial(0, s(0), 0), "hh:MM") & ",日落时间为:" & Format(TimeSerial(0, s(1), 0), "hh:MM")
End Function

Sub macro1()
Debug.Print Suntime(113.8, 27.55)
End Sub
2022-12-12 16:16
mrexcel
Rank: 6Rank: 6
等 级:贵宾
威 望:22
帖 子:126
专家分:480
注 册:2022-11-3
收藏
得分:0 
日出时间为:07:16,日落时间为:17:33
2022-12-12 16:18
yuma
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:银河系
等 级:贵宾
威 望:37
帖 子:1925
专家分:2992
注 册:2009-12-22
收藏
得分:0 
回复 4楼 mrexcel
这样可否?乱改的,日出时间和你差不多。不知我的公式有没有问题。

Dim JD, WD, Days, SunUp, 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)
SunUp = Round(24*(180+TimeArea*15-JD-ACOS*180/3.14)/360, 2)
SunDown = Round(24*(1+(TimeArea*15-JD)/180)-24*(180+TimeArea*15-JD-ACOS*180/3.14)/360, 2)
Arr = Split(SunUp, ".")
SunUp = Arr(0) & ":" & Int((0 &"."&Int(Arr(1)))*60)
Arr = Split(SunDown, ".")
SunDown = Arr(0) & ":" & Int((0 &"."&Int(Arr(1)))*60)
WScript.Echo "本地" & Today & "的日出时间为:" & SunUp & " 日落时间为:" & SunDown

[此贴子已经被作者于2022-12-12 19:44编辑过]


心生万象,万象皆程序!
本人计算机知识网:http://bbs.为防伸手党,本站已停止会员注册。
2022-12-12 19:09
mrexcel
Rank: 6Rank: 6
等 级:贵宾
威 望:22
帖 子:126
专家分:480
注 册:2022-11-3
收藏
得分:0 
以下是引用yuma在2022-12-12 19:09:48的发言:

这样可否?乱改的,日出时间和你差不多。不知我的公式有没有问题。

Dim JD, WD, Days, SunUp, 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)
SunUp = Round(24*(180+TimeArea*15-JD-ACOS*180/3.14)/360, 2)
SunDown = Round(24*(1+(TimeArea*15-JD)/180)-24*(180+TimeArea*15-JD-ACOS*180/3.14)/360, 2)
Arr = Split(SunUp, ".")
SunUp = Arr(0) & ":" & Int((0 &"."&Int(Arr(1)))*60)
Arr = Split(SunDown, ".")
SunDown = Arr(0) & ":" & Int((0 &"."&Int(Arr(1)))*60)
WScript.Echo "本地" & Today & "的日出时间为:" & SunUp & " 日落时间为:" & SunDown



没什么问题,3.14可以用4*ATN(1)代替
2022-12-12 22:30
yuma
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:银河系
等 级:贵宾
威 望:37
帖 子:1925
专家分:2992
注 册:2009-12-22
收藏
得分:0 
回复 7楼 mrexcel
跟你的时间相差1分钟,不知问题出在哪?

心生万象,万象皆程序!
本人计算机知识网:http://bbs.为防伸手党,本站已停止会员注册。
2022-12-13 08:22
mrexcel
Rank: 6Rank: 6
等 级:贵宾
威 望:22
帖 子:126
专家分:480
注 册:2022-11-3
收藏
得分:0 
计算公式一样,精度问题。
2022-12-13 09:39
yuma
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:银河系
等 级:贵宾
威 望:37
帖 子:1925
专家分:2992
注 册:2009-12-22
收藏
得分:0 
非常感谢!

心生万象,万象皆程序!
本人计算机知识网:http://bbs.为防伸手党,本站已停止会员注册。
2022-12-13 10:17
快速回复:VBS计算指定经纬度地区当天日落时间
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.019643 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved