【问题标题】:daylight or night time with javascript使用 javascript 的白天或夜晚时间
【发布时间】:2021-12-27 20:10:17
【问题描述】:

我希望根据客户所在时区是白天还是黑夜来创建一个具有不同 UI 的网站。现在我有这个基于我在互联网上找到的代码:

const hours = new Date().getHours()
const isDayTime = hours > 6 && hours < 20

if (isDayTime === True){
    //do this...
}

但问题是每个时区的日出和日落都不一样,而且它会随着季节的变化而变化,所以将 6 到 20 点视为我的白天时间是错误的(因为它可能是冬天 20 点之前的夜间时间)。

有没有办法根据客户端时区获取白天时间或夜间时间?

【问题讨论】:

  • 这可能会有所帮助:sunrise-sunset.org/api
  • 日出/日落时间即使在同一时区也不同,您需要客户的经纬度位置来计算日出/日落时间。
  • 时区是经度,因此(大部分)与日出无关,因为它基于纬度。即在特定的一天,格林威治标准时间的某人将在上午 8 点日出,而某人在同一纬度,但在东部标准时间也将在上午 8 点(他们的当地时间)日出(根据确切的时间给予或花费几分钟它们在时区的哪个位置)
  • 谢谢@RandyCasburn
  • 谢谢@freedomn-m

标签: javascript jquery time timezone


【解决方案1】:

一个特别有趣的问题,其答案比我认为您可能预期的要复杂。

首先,我担心您也忘记了仅考虑时区并不能提供足够的信息来计算白天或黑夜。您还必须将其与纬度参考进行交叉引用,因为白天和黑夜的持续时间会有所不同。

一个有用的线索,来自 Stack Overflow 上具有类似凭据的另一个答案:https://stackoverflow.com/a/15044683/60318

计算日出和算法的简明描述 日落由美国海军天文台提供,可用 这里:

http://edwilliams.org/sunrise_sunset_algorithm.htm

除了提供日期和地点外,您还需要 选择一个天顶角(太阳将被认为具有 "risen" 或 "set") - 链接的页面有几个选项。

这仍然需要内置到一个函数中,但如果你很聪明地在 github 上寻找要点,你可能会发现一些有用的东西。

这里有一个日出/日落计算器:https://gml.noaa.gov/grad/solcalc/sunrise.html

您可以了解将用户的位置与时区进行交叉引用,我认为您将有一个更完整的解决方案。

【讨论】:

    猜你喜欢
    • 2016-04-08
    • 2019-11-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-02-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多