如何通过经纬度判读时区


#1

晚上好,

我查看了timezone库,以及Goedesty都没有找到。哪位大侠知道如何给定经纬度来判断对应时区?

理想代码如下

using Geodesty
p = LLA(51.345678, 121.9876543, 0)
tz = LLAtoTimeZone(p)
# code

#2

APIs

经度 -> 时区

要 UTC+8 这样的时区,用经度就可以了

# caculateTimeZone.jl

"""
根据经度计算时区。
"""
function tz(lon::Real)::Int
    d = div(lon, 15) |> Int
    r = rem(lon, 15)
    if r < 7.5
        d
    else
        d + (lon>0 ? 1 : -1)
    end
end
function TimeZone(lon::Real)
    r = tz(lon)
    tl = r>=0 ? '+'*string(r) : string(r) 
    "UTC" * tl
end


for i in range(-180, step=15, stop=180)
    TimeZone(i) |> println
end
UTC-12
UTC-11
UTC-10
UTC-9
UTC-8
UTC-7
UTC-6
UTC-5
...
UTC+0
...
UTC+12

看了眼维基还能 +14,自己慢慢加判断吧

ref:


#3

谢谢。后来在stackoverflow上找到了更为齐全的解释。对于15度一小时的原则解释,个人觉得还是有很多例外。例如大中华

我计划选中timezonefinderpytzwhere两个pythong库试一试。