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
相关产品推荐
相关产品推荐

