You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

加载DarkSky数据后,如何用JavaScript格式化日期、时间与温度?

解决DarkSky天气数据的时间戳格式化与字段困惑

嘿,刚好我之前也对接过DarkSky的API,来帮你理清这两个核心问题:

先搞懂那些带Time的字段含义

你提到的temperatureHighTime、temperatureLowTime这类字段,其实是对应气温极值出现的精确时间点:

  • temperatureHighTime / apparentTemperatureHighTime:当天的最高气温(或体感最高温)会在这个时间点出现,值是秒级Unix时间戳
  • temperatureLowTime / apparentTemperatureLowTime:当天的最低气温(或体感最低温)出现的时间戳
  • 另外temperatureMaxTime/temperatureMinTime是整个预报周期内的极端温时间,和单日的High/Low要区分开哦

把Unix时间戳转成可读时间

DarkSky返回的时间戳都是秒级的(不是常见的毫秒级),所以转换的时候要注意单位,下面给你两种常用开发语言的实现:

JavaScript 实现

// 拿temperatureHighTime的示例值1527627600来演示
const highTempTimestamp = 1527627600;
// 把秒级转成毫秒级,传给Date对象
const highTempDate = new Date(highTempTimestamp * 1000);

// 快速转成本地可读时间,比如 "5/29/2018, 2:00:00 PM"
const readableLocalTime = highTempDate.toLocaleString();

// 自定义格式(更美观)
const formattedTime = new Intl.DateTimeFormat('en-US', {
  year: 'numeric',
  month: 'short',
  day: 'numeric',
  hour: '2-digit',
  minute: '2-digit',
  timeZone: 'America/New_York' // 可以指定时区,避免本地时区偏差
}).format(highTempDate);
console.log(formattedTime); // 输出 "May 29, 2018, 02:00 PM"

Python 实现

import datetime
import pytz # 需要安装的话用 pip install pytz

high_temp_timestamp = 1527627600
# 转成本地时间
local_time = datetime.datetime.fromtimestamp(high_temp_timestamp).strftime('%Y-%m-%d %H:%M:%S')
print(local_time) # 输出 "2018-05-29 14:00:00"

# 指定时区(比如UTC转纽约时间)
ny_tz = pytz.timezone('America/New_York')
ny_time = datetime.datetime.fromtimestamp(high_temp_timestamp, ny_tz).strftime('%b %d, %Y %I:%M %p')
print(ny_time) # 输出 "May 29, 2018 02:00 PM"

温度值的格式化处理

DarkSky默认返回的是华氏度(°F),如果需要转成摄氏度(°C),用这个公式就好:°C = (°F - 32) * 5/9,同时可以保留1-2位小数让显示更清爽:

JavaScript 示例

const tempHighF = 84.29;
// 转成摄氏度并保留1位小数
const tempHighC = ((tempHighF - 32) * 5/9).toFixed(1);
console.log(`${tempHighC}°C`); // 输出 "29.0°C"

Python 示例

temp_high_f = 84.29
temp_high_c = round((temp_high_f - 32) * 5/9, 1)
print(f"{temp_high_c}°C") # 输出 "29.0°C"

小提示

  • 时区问题一定要注意:DarkSky的时间戳是UTC时间,转换时如果要显示用户本地时间,记得做好时区映射,不然会出现时间偏差
  • 那个icon字段(比如示例里的"fog"),DarkSky有一套标准的图标名称,你可以提前准备好对应图标,直接关联显示,用户体验会更好

内容的提问来源于stack exchange,提问作者Benjamin So

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.29 08:04:35