C#日出/日落与纬度/经度

Ian*_*ink 30 c# latitude-longitude

在给定经度和经度的情况下,当太阳将在某一天设定和升高时,是否有一种方法可以计算?

Ant*_*nes 18

Javascript计算 这里.现在你只需要移植.


编辑:现在计算在此页面的源代码中.


编辑:是源代码的直接链接.无需通过html进行搜索.


Tro*_*ald 7

我知道这篇文章很旧,但是万一有人还在找...

CoordinateSharp可作为Nuget软件包使用。这是一个独立包装,可以处理太阳和月亮时间。

Celestial cel = Celestial.CalculateCelestialTimes(85.57682, -70.75678, new DateTime(2017,8,21));
Console.WriteLine(cel.SunRise.Value.ToString());
Run Code Online (Sandbox Code Playgroud)

注意:

假定DateTimes始终为UTC。

最后,.Condition如果日期返回null ,则可能需要引用天体对象Sun / Moon 。当太阳整天升/降时,就会发生这种情况。

编辑1/9/2019

自从这篇文章以来,图书馆发生了巨大的变化。现在,它也可以处理当地时间。

  • 但它不是免费的!它具有限制性且令人困惑的公共和商业使用许可证,自述文件中没有对此进行解释。它需要为任何闭源商业用途购买商业许可证...... (2认同)
  • 本期对许可协议进行了解释 https://github.com/Tronald/CooperativeSharp/issues/93 (2认同)

dot*_*tsa 5

我用NAA javascript和c#在C#中创建了这个库.

C#中的日出和日落

我对这两个网站进行了测试,它显示的时间与网站完全一样.

http://www.timeanddate.com/sun/usa/seattle

http://www.esrl.noaa.gov/gmd/grad/solcalc/

  • 做得好.如果你把它放在github而不是下载,会更酷. (3认同)

tsu*_*suz 5

这个API似乎对我有用:

http://sunrise-sunset.org/api

  • 请注意,该API需要归因. (4认同)

pol*_*ris 5

我已经在 UWP 中测试了这个 nuget 包。

https://www.nuget.org/packages/SolarCalculator/

该文档有点粗略,在这里:

https://github.com/porrey/Solar-Calculator

你可以用它来获取日出,给定

la = 纬度;lo = 经度;对于您所在的地区:

            SolarTimes solarTimes = new SolarTimes(DateTime.Now, la, lo);
            DateTime sr = solarTimes.Sunrise;
            DateTime dt = Convert.ToDateTime(sr);
            textblockb.Text = dt.ToString("h:mm:ss");
Run Code Online (Sandbox Code Playgroud)

您可以使用 PM 管理器在 Visual Studio 中安装它

Install-Package SolarCalculator -Version 2.0.2 
Run Code Online (Sandbox Code Playgroud)

或者通过在“管理 NuGet 包”Visual Studio 库中查找 SolarCalculator。


小智 2

从以下信息开始:

日出方程

我正在用它来编写仍在制作中的 ruby​​ 脚本。我无法理解多部分朱利安日期。

明确的一件事是,您应该追求准确的太阳凌日时间。然后减去并添加 semi_diurnal_arc = acos(cos_omega) ,该值基于您的纬度和太阳赤纬角。哦!并且一定要包括太阳中心和地球折射。看来这个地球真是个魔法师。