【问题标题】:Calculating sunrise/sunset times in Javascript用Javascript计算日出/日落时间
【发布时间】:2013-09-22 21:44:29
【问题描述】:

我有一个时间,以及一个以度数为单位的纬度。是否有任何方法可以使用此信息在 Javascript 中计算日出和日落时间?

【问题讨论】:

  • 当然,总有办法...你能发布你的代码吗?
  • 对您的问题的简短回答是“是”。一个好问题会说“我通过谷歌搜索'日落时间'找到了以下等式”,并尝试像这样实现它。我期待得到 X,但我得到 Y。我做错了什么?
  • 经度不会有点帮助吗? ;-) 您是否有某种表要查找或者您正在访问 REST API?
  • 不,没有这样的方法。但在这里你可以找到足够的信息来做到这一点:en.wikipedia.org/wiki/Sunrise_equation
  • 有这样一种方式(假设你真的想说“给定纬度、经度和日期”——因为所有这些都很重要),它由 NOAA esrl.noaa.gov/gmd/grad/solcalc/sunrise.html 发布。你甚至可以看到javascript。一分钟与谷歌...另外 30 秒给出了最新版本:esrl.noaa.gov/gmd/grad/solcalc

标签: javascript


【解决方案1】:

SunCalc 似乎可以满足您的需求

SunCalc 是一个小型的 BSD 许可 JavaScript 库,用于计算给定位置和时间的太阳位置、日光相位(日出、日落、黄昏等时间)、月亮位置和月相

https://github.com/mourner/suncalc

【讨论】:

  • 这是正确的答案——SunCalc 非常适合浏览器和节点。
  • 非常适合我的 Node 项目的小库。谢谢!
【解决方案2】:

相关代码可以在http://www.esrl.noaa.gov/gmd/grad/solcalc/找到

您需要经度、纬度和日期。如果您想在当地时间或世界时间给出答案,这将很有帮助。获得真正准确度所需的校正(以及您用于“日出”和“日落”的定义)都对计算的有效性起着重要作用。

如果您只想知道“大约”何时太阳与地平线齐平,“假设地球是球形的,围绕太阳的轨道是圆形的,并且没有大气失真” - 那么整个拍摄比赛就会减少相当易于管理。但如果你想得到真正的答案,你必须通过上述网站的大约 600 行脚本。

对于近似值,您可以查看this earlier answer

【讨论】:

  • 非常感谢您的回答!根据您提供的内容,我应该能够对日出/日落进行方法化(如果一切顺利)。再次感谢您的宝贵时间!
  • 祝你好运!有时你只需要轻轻一推。
  • 我没有问这个问题,但我会问的,并且善于澄清细节。更好地给出两个答案。谢谢! ++
【解决方案3】:

Sun-time 如果你使用 JavaScript 作为服务器端 (Node.js) 的编程语言就足够了。

npm install sun-time ; 

然后:

var sun=require('sun-time');
 sun('Tunis') // -> i.e : return {rise:"05:00",set:"18:36"}

for more details

【讨论】:

  • 现在是 NPM 包 404s。谢谢
【解决方案4】:

这个javascript程序

https://github.com/Triggertrap/sun-js

仅根据您所在位置的纬度和经度计算日出和日落时间,可以从 GPS 自动获取如下:

<script>
var x = document.getElementById("demo");
function getLocation() {
    if (navigator.geolocation) {
        navigator.geolocation.getCurrentPosition(showPosition);
    } else {
        x.innerHTML = "Geolocation is not supported by this browser.";
    }
}
function showPosition(position) {
    x.innerHTML = "Latitude: " + position.coords.latitude + 
    "<br>Longitude: " + position.coords.longitude; 
}
</script> 

它包含一个自述文件来解释如何使用它。它计算天顶,而且非常准确。

【讨论】:

    猜你喜欢
    • 2010-10-16
    • 1970-01-01
    • 1970-01-01
    • 2011-06-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-07
    相关资源
    最近更新 更多