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

如何在JavaScript中将字符串转为UTC时区的Date对象?

将字符串转换为UTC时区的Date对象

问题根源

你当前的代码用moment(...)解析字符串时,默认会把输入视为本地时区的时间。当你转成Date对象后,后端读取UTC时间时,会自动将本地时间(GMT+03)转换为UTC,导致时间从09:25变成06:25。

解决方案

方法1:使用moment.utc()解析(推荐,保留moment依赖)

直接用moment.utc()把输入字符串当作UTC时间解析,再转成Date对象:

// 把输入字符串视为UTC时间解析
const utcMoment = moment.utc('2023-06-16 09-25-41', 'YYYY-MM-DD HH-mm-ss');
// 转换为Date对象,此时UTC时间就是原字符串的09:25:41
return utcMoment.toDate();

这样生成的Date对象,内部存储的时间戳对应的UTC时间就是你需要的09:25:41,后端处理时能拿到正确的UTC时间。

方法2:手动构造UTC Date对象(无需moment)

如果不想依赖moment,可以拆分字符串参数,用Date.UTC()构造UTC时间戳:

const dateStr = '2023-06-16 09-25-41';
// 拆分日期和时间部分
const [datePart, timePart] = dateStr.split(' ');
const [year, month, day] = datePart.split('-').map(Number);
const [hour, minute, second] = timePart.split('-').map(Number);

// 注意:Date.UTC的月份参数是0开始的,所以要减1
const utcDate = new Date(Date.UTC(year, month - 1, day, hour, minute, second));
return utcDate;

这种方式直接基于UTC时间创建Date对象,同样能保证后端读取的UTC时间为09:25:41。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.19 04:42:20