首页 > 解决方案 > 如何将天气 api 转换为当地时间(ReactJS/JavaScript)

问题描述

想要转换为当地时间的原因是我可以用图像更改背景。所以最后我想要像 12:00 或 20:00 这样的时间输出。我的 JSON 看起来像:

{
  "lat":52.37,
  "lon":4.89,
  "timezone":"Europe/Amsterdam",
  "timezone_offset":7200,
  "current":{
    "dt":1593619296,
    "sunrise":1593573770,
    "sunset":1593633935,
    "temp":20.09,
    "feels_like":13.21,
    "pressure":1006,
    "humidity":56,
    "dew_point":11.05,
    "uvi":6.73,
    "clouds":20,
    "visibility":10000,
    "wind_speed":10.3,
    "wind_deg":260,
    "weather":[
    {
      "id":801,
      "main":"Clouds",
      "description":"few clouds",
      "icon":"02d"
    }
  ],
    "rain":{
  }
},

标签: javascriptreactjsweather-api

解决方案


如果我正确地抓住了你的问题,你需要这样的东西(例如,你可以把它重构得更漂亮):

const dt = new Date(weatherData.current.dt * 1000);
const sunrise = new Date(weatherData.current.sunrise * 1000);
const sunset = new Date(weatherData.current.sunset * 1000);

我们将秒数乘以 1000,因为 JS 中的时间戳以毫秒为单位,而不是像 Unix 操作系统那样以秒为单位。

之后,您可以使用对象通过Date APIDate获取您想要的内容。我想,你想要方法。.getHours()


推荐阅读