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

React Native项目中Moment时间格式化在iPhone 12 Mini显示异常

问题根因

该异常并非Moment针对iPhone 12 Mini的专属适配问题,由两个常见问题叠加导致:

  • moment(0) 传入的是Unix时间戳0,对应UTC标准时间1970-01-01 00:00:00,Moment默认会读取设备本地时区解析该时间,若设备时区存在30分钟的偏移量,或是老版本Moment读取iOS系统时区出错,都会导致解析出的时间分钟位为30
  • 你使用的格式化字符串存在位序错误:你预期输出的00:00:00对应「分钟:秒:毫秒」的话没问题,但如果预期是「小时:分钟:毫秒」,你使用的mm:ss:SS中mm是分钟占位符,漏掉了小时占位符,会把小时数换算为分钟累加到mm位,进一步放大展示异常

修复方案

方案1:强制UTC解析消除时区影响

如果你是做倒计时、时长统计等和时区无关的时间展示,直接强制使用UTC模式解析时间戳,所有设备输出统一:

import moment from 'moment';

const format = 'mm:ss:SS';
const startPoint = moment.utc(0).format(format);

修改后所有设备都会输出预期的00:00:00。

方案2:升级Moment修复时区读取bug

如果确认设备时区为常规整点偏移时区,可将项目中的Moment升级到2.29.1及以上版本,该版本修复了iOS 14+系统时区读取异常的已知问题。

方案3:修正格式化字符串

如果你需要展示本地时间的「小时:分钟:秒:毫秒」,将格式化字符串调整为正确的占位符即可:

// HH为24小时制小时占位符,hh为12小时制小时占位符
const format = 'HH:mm:ss:SS';

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 02:12:03