You need to enable JavaScript to run this app. 如何在JavaScript中合并两个日期的日期部分与时间部分得到新Date对象
优惠活动
大模型
产品
解决方案
定价
更多

如何在JavaScript中合并两个日期的日期部分与时间部分得到新Date对象

实现方案

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

因为你的输入是标准ISO 8601格式的日期字符串,直接拆分拼接即可,性能最优:

// 示例输入
const startDateStr = "2021-05-25T09:50:40.603Z";
const startTimeStr = "2021-05-12T11:52:40.603Z";

// 拆分日期、时间部分
const datePart = startDateStr.split('T')[0]; // 提取结果:2021-05-25
const timePart = startTimeStr.split('T')[1]; // 提取结果:11:52:40.603Z

// 拼接后转为合法Date对象
const combinedDate = new Date(`${datePart}T${timePart}`);

// 可选:校验日期有效性
if (isNaN(combinedDate.getTime())) {
  console.error('输入日期格式异常,合并失败');
} else {
  console.log(combinedDate.toISOString()); // 输出:2021-05-25T11:52:40.603Z
}

方案2:使用date-fns实现

如果你已经在项目中引入了date-fns,可以用日期对象操作的方式实现,兼容性更强:

import { parseISO, set } from 'date-fns';

// 示例输入
const startDateStr = "2021-05-25T09:50:40.603Z";
const startTimeStr = "2021-05-12T11:52:40.603Z";

// 先把字符串转为Date对象
const startDate = parseISO(startDateStr);
const startTime = parseISO(startTimeStr);

// 把startDate的时间部分替换为startTime的UTC时间
const combinedDate = set(startDate, {
  hours: startTime.getUTCHours(),
  minutes: startTime.getUTCMinutes(),
  seconds: startTime.getUTCSeconds(),
  milliseconds: startTime.getUTCMilliseconds()
});

console.log(combinedDate.toISOString()); // 输出:2021-05-25T11:52:40.603Z

注意事项

  • 两种方案输出的都是标准JavaScript Date对象,可直接用于后续的日期计算、格式化操作
  • 所有操作都保留了原数据的UTC时区,不会因为本地时区差异出现日期偏移问题
  • 如果输入的日期字符串不是标准ISO格式,建议先做格式校验再执行拆分操作

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.19 06:15:03