使用moment.js(Node.js)转换时区时间至UTC时出现无效日期问题求助
解决moment.js时区转换返回「Invalid date」的问题
问题原因
- 未指定时间解析格式:仅传入
"10:00"这类纯时间字符串时,moment无法识别输入的格式规则,导致解析失败。 - 未正确使用moment-timezone:moment核心库不包含时区数据库,必须安装并引入
moment-timezone包才能处理Europe/Budapest这类时区标识。
解决步骤
1. 安装依赖
确保项目中安装了moment和moment-timezone:
npm install moment moment-timezone
2. 修改代码(两种可选方案)
方案一:补全日期信息
给输入时间添加完整的日期,让moment能明确解析完整的时间点:
const moment = require('moment-timezone'); const inputTime = "2024-05-20 10:00"; // 补全日期 const timezone = "Europe/Budapest"; const utcTime = moment.tz(inputTime, timezone).utc().format("HH:mm"); console.log(utcTime);
方案二:指定解析格式
明确告诉moment输入时间的格式,moment会自动补全当前日期(基于指定时区的日期):
const moment = require('moment-timezone'); const inputTime = "10:00"; const timezone = "Europe/Budapest"; // 第二个参数指定输入格式为HH:mm const utcTime = moment.tz(inputTime, "HH:mm", timezone).utc().format("HH:mm"); console.log(utcTime);
内容的提问来源于stack exchange,提问作者Dhruval Bhuva
相关产品推荐
相关产品推荐

