日出/日落时间:秒转hh:mm格式问题求助
解决日出日落时间格式转换问题
OpenWeatherMap 返回的 sunrise 和 sunset 是Unix时间戳(秒级),你的代码存在两个核心问题:
- 调用
DateTime.fromMillisecondsSinceEpoch时,需先将秒级时间戳转为毫秒(即乘以1000)作为参数,而非生成对象后再做乘法操作 - 未对生成的DateTime对象做格式化处理,直接输出会得到对象本身,而非目标的hh:mm格式
方案一:使用Luxon库(对应你代码里的DateTime方法)
// 处理日出时间 const sunriseTimestamp = response.data.sys.sunrise; const sunriseTime = DateTime.fromMillis(sunriseTimestamp * 1000).toFormat('HH:mm'); document.querySelector("#sunrise").innerHTML = sunriseTime; // 处理日落时间同理 const sunsetTimestamp = response.data.sys.sunset; const sunsetTime = DateTime.fromMillis(sunsetTimestamp * 1000).toFormat('HH:mm'); document.querySelector("#sunset").innerHTML = sunsetTime;
方案二:原生JavaScript实现(无需第三方库)
// 处理日出时间 const sunriseDate = new Date(response.data.sys.sunrise * 1000); const sunriseTime = sunriseDate.toLocaleTimeString('zh-CN', { hour: '2-digit', minute: '2-digit' }); document.querySelector("#sunrise").innerHTML = sunriseTime; // 处理日落时间同理 const sunsetDate = new Date(response.data.sys.sunset * 1000); const sunsetTime = sunsetDate.toLocaleTimeString('zh-CN', { hour: '2-digit', minute: '2-digit' }); document.querySelector("#sunset").innerHTML = sunsetTime;
注:toLocaleTimeString 的地域参数(如zh-CN)可根据需求调整,只要保证输出为两位小时+两位分钟的格式即可。
内容的提问来源于stack exchange,提问作者Magdalena
相关产品推荐
相关产品推荐

