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

求助:JavaScript中OpenWeatherMap API日出日落Unix时间转时分格式

解决Unix时间戳转时分格式问题

你遇到的问题是因为原生JavaScript的Date对象并没有.format()方法,这个方法是moment.js、date-fns这类日期处理库提供的——没引入对应库就调用会抛出错误,导致后续代码执行中断,所以页面无法正常显示内容。

方案一:原生JavaScript实现(无需第三方库)

先写一个工具函数,把OpenWeatherMap返回的秒级Unix时间戳转成HH:mm格式:

function formatUnixTimeToHHmm(unixTimestamp) {
  // 转成Date对象需要毫秒级时间戳,所以乘以1000
  const date = new Date(unixTimestamp * 1000);
  // 补零确保时分都是两位数字
  const hours = String(date.getHours()).padStart(2, '0');
  const minutes = String(date.getMinutes()).padStart(2, '0');
  return `${hours}:${minutes}`;
}

然后修改你的原有代码:

// 一次解构获取日出日落时间
const { sunrise, sunset } = data.sys;

// 格式化时间
const formattedSunrise = formatUnixTimeToHHmm(sunrise);
const formattedSunset = formatUnixTimeToHHmm(sunset);

// 更新页面显示
document.querySelector(".sunrise").innerText = `Sonnenaufgang: ${formattedSunrise}`;
document.querySelector(".sunset").innerText = `Sonnenuntergang: ${formattedSunset}`;

方案二:使用第三方日期库(如moment.js)

如果你更倾向于用.format()方法,需要先引入moment.js库:

<script src="https://cdn.jsdelivr.net/npm/moment@2.29.4/moment.min.js"></script>

再修改代码:

const { sunrise, sunset } = data.sys;

// moment.unix()直接支持秒级时间戳
const formattedSunrise = moment.unix(sunrise).format('HH:mm');
const formattedSunset = moment.unix(sunset).format('HH:mm');

document.querySelector(".sunrise").innerText = `Sonnenaufgang: ${formattedSunrise}`;
document.querySelector(".sunset").innerText = `Sonnenuntergang: ${formattedSunset}`;

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.19 01:53:21