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

JavaScript实现不同格式日期四舍五入到最近完整日期的问题

JavaScript 实现日期四舍五入到最近UTC零点

核心逻辑

  • 首先将任意合法的日期输入(ISO字符串、13位时间戳)统一转为JS内置Date对象
  • 给当前日期加12小时的毫秒偏移量,自动完成跨天判断
  • 把偏移后的日期的UTC时、分、秒、毫秒全部置为0,即为符合要求的最近完整日期

完整代码

function roundToNearestUTCDate(dateInput) {
  // 兼容ISO字符串、13位时间戳入参
  const date = new Date(dateInput);
  // 校验日期合法性
  if (isNaN(date.getTime())) {
    throw new Error('无效的日期输入');
  }
  // 加12小时毫秒数:12 * 60 * 60 * 1000 = 43200000
  const offsetDate = new Date(date.getTime() + 43200000);
  // 置UTC时分秒毫秒为0
  offsetDate.setUTCHours(0, 0, 0, 0);
  return offsetDate;
}

测试验证

你给出的两个示例测试结果如下:

// 测试1:ISO字符串输入
const test1 = roundToNearestUTCDate('2022-03-13T23:00:00.000Z');
console.log(test1.toISOString()); // 输出 2022-03-14T00:00:00.000Z

// 测试2:时间戳输入
const test2 = roundToNearestUTCDate(1647817200000);
console.log(test2.toISOString()); // 输出 2022-03-14T00:00:00.000Z

// 测试3:凌晨1点的场景
const test3 = roundToNearestUTCDate('2022-03-14T01:00:00.000Z');
console.log(test3.toISOString()); // 输出 2022-03-14T00:00:00.000Z

输出格式说明

如果需要直接拿到ISO字符串,可以直接调用返回值的toISOString()方法;如果需要13位时间戳,调用getTime()方法即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 23:27:01