日出/设置时间无效?

问题描述 投票:0回答:1

我正在获取日出/设置时间的虚假值(例如内华达州):

let url = "http://api.openweathermap.org/data/2.5/weather?q=Nevada,us&APPID=<app_id>&units=metric"
let req = new Request(url)
let json = await req.loadJSON()

function convertTime(unixTime){
    let dt = new Date(unixTime * 1000)
    let h = dt.getHours()
    let m = "0" + dt.getMinutes()
    let t = h + ":" + m.substr(-2)
    return t
}

let sRise = convertTime(json.sys.sunrise)
let sSet = convertTime(json.sys.sunset)

alert(convertTime(sRise));
// Shows: 14:32 should be 05:24

alert(convertTime(sSet));
// Shows: 05:10 should be 19:55

我想念什么吗? (附言:我在欧洲,但通过代理获得了相同的结果)。

javascript openweathermap
1个回答
2
投票

天气API(https://openweathermap.org/current)具有另一个数据元素,该数据元素有助于将sys对象提供的UTC时间转换为请求区域的本地时间。您的转换功能需要考虑偏移量。示例:

let url = "http://api.openweathermap.org/data/2.5/weather?q=Nevada,us&APPID=<app_id>&units=metric"
let req = new Request(url)
let json = await req.loadJSON()

function convertTime(unixTime, offset){
    let dt = new Date((unixTime + offset) * 1000)
    let h = dt.getHours()
    let m = "0" + dt.getMinutes()
    let t = h + ":" + m.substr(-2)
    return t
}

let sRise = convertTime(json.sys.sunrise, json.timezone)
let sSet = convertTime(json.sys.sunset, json.timezone)

alert(convertTime(sRise));
// Shows: 05:24

alert(convertTime(sSet));
// Shows: 19:55
© www.soinside.com 2019 - 2024. All rights reserved.