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

