
c#通过经纬度获取真太阳时间
什么是真太阳时间?
真太阳时间是以太阳真实在你头顶经过子午线(中天)作为“正午”的时间系统。它反映的是太阳每天的真实运行状态,不受时区和人为标准时间影响。
它依赖于:
你所在的 经纬度
当前的 时间
地球的轨道偏心率和自转速度(引入“均时差”)
中国经纬度
这里我给大家分享了全国各个地方的经纬度,里面是一个FullChinaCitys.json
。
链接: https://pan.baidu.com/s/18tDRyXTNN3iCqxTFRUolTw?pwd=2a7u 提取码: 2a7u
安装 Astronomy Engine
Astronomy Engine 是一个跨平台的开源天文计算库,支持 .NET。
在你的项目目录下安装 NuGet 包:
C# 代码实现
// 你的数据:经纬度 + 时间
//double latitude = 39.9042; // 例如:北京
//double longitude = 116.4074;
double latitude = 29.299462; // 这里我以我出生地彭水为例子
double longitude = 108.172578;
double height = 0.0; // 海拔(单位米)
DateTime inputTime = DateTime.Parse("2024-04-28 00:56:00"); // 写上我的出生时间
// 创建观察者
Observer observer = new Observer(latitude, longitude, height);
// 创建 AstroTime 对象
AstroTime astroTime = new AstroTime(inputTime);
// 计算太阳的时角(Hour Angle)
double hourAngle = Astronomy.HourAngle(Body.Sun, astroTime, observer);
// 转换成真太阳时间(小时)
double solarTime = (hourAngle + 12.0) % 24.0;
// 转换成 hh:mm:ss
int millis = (int)Math.Round(solarTime * 3.6e+6);
int seconds = millis / 1000;
millis %= 1000;
int minutes = seconds / 60;
seconds %= 60;
int hours = minutes / 60;
minutes %= 60;
hours %= 24;
// 输出
Debug.WriteLine($"?? 真太阳时 = {solarTime:F4} 小时 ({hours:00}:{minutes:00}:{seconds:00}.{millis:000})");
运行结果如下:
欢迎加群讨论技术,1群:677373950(满了,可以加,但通过不了),2群:656732739
评价
排名
2
文章
657
粉丝
44
评论
93
docker中Sware集群与service
尘叶心繁 : 想学呀!我教你呀
一个bug让程序员走上法庭 索赔金额达400亿日元
叼着奶瓶逛酒吧 : 所以说做程序员也要懂点法律知识
.net core 塑形资源
剑轩 : 收藏收藏
映射AutoMapper
剑轩 :
好是好,这个对效率影响大不大哇,效率高不高
一个bug让程序员走上法庭 索赔金额达400亿日元
剑轩 : 有点可怕
ASP.NET Core 服务注册生命周期
剑轩 :
http://www.tnblog.net/aojiancc2/article/details/167
ICP备案 :渝ICP备18016597号-1
网站信息:2018-2025TNBLOG.NET
技术交流:群号656732739
联系我们:contact@tnblog.net
公网安备:
50010702506256


欢迎加群交流技术