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

如何将OpenWeatherMap API返回的特定格式日期字符串转为JavaScript Date对象?

解决JavaScript解析'yyyy-mm-dd hh:mm:ss'格式日期为Date对象的问题

这个问题我之前对接OpenWeatherMap API时也踩过坑!直接用new Date('2018-04-28 09:00:00')确实会在不少环境里返回NaN——因为这种空格分隔的格式并不是JavaScript Date构造函数默认兼容的标准格式。给你几个简单靠谱的原生解决方法:

方法一:转成ISO 8601标准格式(最简单)

JavaScript对ISO 8601格式(yyyy-mm-ddThh:mm:ss)的支持非常完善,我们只需要把原字符串里的空格替换成T即可:

const owmDateStr = '2018-04-28 09:00:00';
const validDate = new Date(owmDateStr.replace(' ', 'T'));
console.log(validDate); // 正确输出对应的Date对象

如果API返回的是UTC时间,还可以在末尾加上Z强制按UTC解析:

const utcDate = new Date(owmDateStr.replace(' ', 'T') + 'Z');

方法二:手动拆分参数构造Date对象(最稳妥)

如果需要兼容老旧浏览器,手动拆分日期时间的各个部分是最保险的方式。注意JavaScript的月份是从0开始计数(1月对应0,12月对应11),所以要把解析到的月份值减1:

const owmDateStr = '2018-04-28 09:00:00';
// 拆分日期和时间部分
const [dateSegment, timeSegment] = owmDateStr.split(' ');
// 拆分年、月、日并转成数字
const [year, month, day] = dateSegment.split('-').map(Number);
// 拆分时、分、秒并转成数字
const [hour, minute, second] = timeSegment.split(':').map(Number);
// 构造Date对象,注意月份要减1
const validDate = new Date(year, month - 1, day, hour, minute, second);

这种方式完全不存在格式兼容性问题,所有支持JavaScript的环境都能正常工作。

方法三:用日期处理库(可选)

如果你的项目已经引入了moment.js或者date-fns这类日期处理库,那解析起来会更省心,直接指定格式即可:

moment.js示例:

const validDate = moment('2018-04-28 09:00:00', 'YYYY-MM-DD HH:mm:ss').toDate();

date-fns示例:

import { parse } from 'date-fns';
const validDate = parse('2018-04-28 09:00:00', 'yyyy-MM-dd HH:mm:ss', new Date());

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 09:16:25