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

moment.js调用minutes()返回0,本地时间格式化分钟丢失问题

解决Moment.js本地时间分钟始终为0的问题

先排查moment对象的创建逻辑

你的问题核心大概率出在moment对象的初始化环节——如果创建时就没正确带入分钟信息,后续无论怎么转本地时间都会返回0。

  • 若从字符串解析时间:必须明确指定匹配的格式,避免moment自动解析出错。比如时间字符串是"2024-05-20 14:35",要这么写:
    const m = moment("2024-05-20 14:35", "YYYY-MM-DD HH:mm");
    
  • 若从时间戳创建:区分秒级/毫秒级时间戳,秒级要乘以1000,比如moment(1716186900 * 1000),否则会被截断到整点。

正确获取本地时间的分钟或格式化

确认moment对象本身包含正确分钟后,用以下方式操作:

  • 获取分钟数:直接调用m.local().minutes(),或者m.minutes()(默认返回本地时间的分钟,除非你之前调用过utc()切换到UTC时区)
  • 格式化带分钟的本地时间:用m.local().format('hh:mm A')(12小时制,如02:35 PM)或m.format('HH:mm')(24小时制,如14:35),注意mm是分钟的占位符,别写错成大写MM(那是月份)。

验证moment对象的原始数据

如果还是有问题,先打印原始对象确认数据是否正确:

console.log(m.toISOString()); // 输出完整带时区的时间,检查分钟是否存在
console.log(m._d); // 查看内部Date对象,确认分钟值

要是这里的分钟就是0,说明创建moment对象时就丢失了数据,得回到初始化步骤排查。

排查全局时区配置

如果项目里用了moment.tz.setDefault()设置过全局时区,可能导致转换异常。可以临时取消后测试:

moment.tz.setDefault(undefined);
console.log(m.local().format('hh:mm'));

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.23 07:45:30