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

React Native获取正确格式当前时间:分钟小于10无前导0问题

解决时间格式化时分钟无前导0的问题

刚好碰到过类似的小坑,这就帮你搞定!你现在的问题是手动拼接时间字符串时,分钟(甚至小时、秒)小于10的时候没有自动补前导0,导致本该显示12:02的时间变成了12:2,看起来很不规整。下面给你两种实用的解决办法:

原生JavaScript解决方案(不用额外依赖)

你可以用ES6的padStart()方法,它能自动给字符串前面补指定字符,直到达到指定长度。咱们把小时和分钟都处理一下,确保都是两位数字:

componentDidMount() {
  const now = new Date();
  const hours = now.getHours().toString().padStart(2, '0');
  const min = now.getMinutes().toString().padStart(2, '0');
  // 如果需要秒的话也一样处理:
  // const sec = now.getSeconds().toString().padStart(2, '0');

  this.setState({
    datetimefinish: `${hours}:${min}`
  });
}

如果项目需要兼容不支持ES6的旧环境,可以写个简单的补零工具函数:

function addLeadingZero(num) {
  return num < 10 ? `0${num}` : num.toString();
}

// 然后在componentDidMount里用:
const hours = addLeadingZero(now.getHours());
const min = addLeadingZero(now.getMinutes());

使用moment.js的简化方案(更省心)

既然你说可以直接用moment.js,那直接用它的格式化方法就搞定了,完全不用手动拼接字符串,moment会自动处理前导0的问题:

componentDidMount() {
  const formattedTime = moment().format('HH:mm');
  // 如果需要显示日期+时间可以用:moment().format('YYYY-MM-DD HH:mm:ss')
  this.setState({
    datetimefinish: formattedTime
  });
}

这里的HH代表24小时制的两位小时数,mm代表两位分钟数,moment会自动帮你补全前导0,比如9点2分就会变成09:02,14点15分就是14:15,非常省心!

修改后再渲染<Text style={styles.text}>{this.state.datetimefinish}</Text>,就能看到正确的带前导0的时间格式啦~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.09 07:52:59