| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1670 人关注过本帖
标题:VBS计算指定经纬度地区当天日落时间
取消只看楼主 加入收藏
yuma
Rank: 12Rank: 12Rank: 12
来 自:银河系
等 级:贵宾
威 望:37
帖 子:1934
专家分:3012
注 册:2009-12-22
结帖率:89.13%
收藏
 问题点数:0 回复次数:6 
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
yuma
Rank: 12Rank: 12Rank: 12
来 自:银河系
等 级:贵宾
威 望:37
帖 子:1934
专家分:3012
注 册:2009-12-22
收藏
得分:0 
回复 2楼 mrexcel
我要是能看的懂这代数式那就历害了。

心生万象,万象皆程序!
本人计算机知识网:http://bbs.为防伸手党,本站已停止会员注册。
2022-12-12 10:19
yuma
Rank: 12Rank: 12Rank: 12
来 自:银河系
等 级:贵宾
威 望:37
帖 子:1934
专家分:3012
注 册: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
yuma
Rank: 12Rank: 12Rank: 12
来 自:银河系
等 级:贵宾
威 望:37
帖 子:1934
专家分:3012
注 册:2009-12-22
收藏
得分:0 
回复 7楼 mrexcel
跟你的时间相差1分钟,不知问题出在哪?

心生万象,万象皆程序!
本人计算机知识网:http://bbs.为防伸手党,本站已停止会员注册。
2022-12-13 08:22
yuma
Rank: 12Rank: 12Rank: 12
来 自:银河系
等 级:贵宾
威 望:37
帖 子:1934
专家分:3012
注 册:2009-12-22
收藏
得分:0 
非常感谢!

心生万象,万象皆程序!
本人计算机知识网:http://bbs.为防伸手党,本站已停止会员注册。
2022-12-13 10:17
yuma
Rank: 12Rank: 12Rank: 12
来 自:银河系
等 级:贵宾
威 望:37
帖 子:1934
专家分:3012
注 册:2009-12-22
收藏
得分:0 
回复 12楼 felix301
还可以,我主要用来算高德地图上收藏点的日出日落时间,方便出行。

心生万象,万象皆程序!
本人计算机知识网:http://bbs.为防伸手党,本站已停止会员注册。
2022-12-18 08:37
yuma
Rank: 12Rank: 12Rank: 12
来 自:银河系
等 级:贵宾
威 望:37
帖 子:1934
专家分:3012
注 册:2009-12-22
收藏
得分:0 
回复 4楼 mrexcel
计算这个日出日落时间,居然和一楼的程序得到的结果不一样。

Debug.Print Suntime(87.58512, 43.780072)      '格式:经度,纬度

为啥?

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



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

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