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

React Native如何获取设备24小时制时间?

嘿,我来帮你搞定这个24小时制时间的问题!看起来你在转换时间格式的时候踩了个小坑,咱们一步步来解决:

先说说你现有代码的问题

你当前的代码里,moment(time.getTime(), ["h:mm A"])这里逻辑不太对:time.getTime()会把Date对象转成毫秒时间戳,而moment解析时间戳的时候,根本不需要后面的格式参数(["h:mm A"]),这就导致转换逻辑没生效,自然得不到正确的24小时制结果。

两种解决方案,任你选

方案一:直接获取24小时制时间(推荐)

既然你用了react-native-datepicker,不如从源头解决——让选择器直接返回24小时制的时间,省得后续转换。只需要给DatePicker加两个属性:

<DatePicker
  mode="time"
  format="HH:mm"  // 指定输出格式为24小时制
  is24Hour={true} // 强制选择器显示24小时制界面
  value={this.state.time}
  onDateChange={(time) => this.setState({ time })}
/>

这样this.state.time直接就是类似"16:30"的24小时制字符串,拿到就能用,完全不用额外处理~

方案二:用Moment正确转换12小时制为24小时制

如果已经拿到了12小时制的时间(不管是字符串还是时间戳),按照下面的方式调整代码:

  • 如果this.state.time是毫秒时间戳:
    直接用moment解析时间戳,再格式化为24小时制:
const hoursFormatted = moment(this.state.time).format("HH:mm");
  • 如果拿到的是12小时制的字符串(比如"4:30 PM"):
    告诉moment原时间的格式,再转成24小时制:
const twelveHourStr = "4:30 PM";
const hoursFormatted = moment(twelveHourStr, "h:mm A").format("HH:mm");
// 输出结果是 "16:30"

你的moment导入语句是对的,不用改,只要按上面的方式调整转换逻辑就行。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 06:40:43