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

如何使用Moment.js修改日期且保持Unix时间戳格式不变?

可以实现,你当前的用法存在几个常见错误,修正后即可实现仅修改日期部分、保留原有时间不变,最终输出仍然为Unix时间戳格式。

你的代码问题说明

  • 每次调用moment(currentTime)都会生成一个全新的Moment实例,你前三次set操作都是在不同的临时实例上执行,没有留存修改结果
  • 你传入的是秒级Unix时间戳,直接传给moment()方法会被识别为毫秒级时间戳,得到的时间完全错误,秒级时间戳需要用moment.unix()方法解析
  • 原始的currentTime是数字类型的原始值,不可能被Moment的方法直接修改,需要主动将修改后的Moment实例转成时间戳赋值给新变量

正确实现代码

示例1:实现你给出的示例需求(2021-08-20 3:00改为2021-08-27 3:00)

const currentTime = 1629442800;

// 解析秒级时间戳,仅修改年月日,时分秒自动保留原有值
const modifiedTime = moment.unix(currentTime)
  .set('year', 2021)
  .set('month', 7) // 注意Moment月份为0索引,1月对应0,8月对应7
  .set('date', 27)
  .unix(); // 转回秒级Unix时间戳

console.log(modifiedTime); // 输出1630047600,和你期望的结果完全一致

示例2:更简洁的批量set写法

const currentTime = 1629442800;
const modifiedTime = moment.unix(currentTime).set({
  year: 2013,
  month: 3, // 对应4月
  date: 1
}).unix();

console.log(modifiedTime); // 输出修改后的秒级Unix时间戳

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 06:42:02