uni-app 【报Bug】plus.nativeUI.pickTime手动输入分钟,确认后成功回调的分钟不正确
uni-app 【报Bug】plus.nativeUI.pickTime手动输入分钟,确认后成功回调的分钟不正确
开发环境 | 版本号 | 项目创建方式 |
---|---|---|
HBuilderX | 3.4.7 | 离线 |
产品分类:HTML5+
手机系统:Android
手机系统版本号:Android 7.0
手机厂商:华为
手机机型:平板M3青春版
示例代码:
var styles = {'title': '请选择时间', 'time': (new Date()), 'popover': ''};
plus.nativeUI.pickTime(function(e){
var timeText = wedo.com.formatDate('hh:mm', e.date);
if(callback){
callback({'date': e.date, 'timeText': timeText});
}else {
self.onConfirm({'date': e.date, 'timeText': timeText});
}
}, function(e){}, styles);
操作步骤:
- 默认时分未当前时间,不做上下滚动手动输入时分数值
预期结果:
- 成功回调获取的时间时分数值是手动输入的值
实际结果:
- 成功回调获取的时间小时值没错,而分钟还是默认的数值
bug描述:
- plus.nativeUI.pickTime手动输入分钟,确认后成功回调的分钟不正确;
- 默认时分未当前时间,不做上下滚动手动输入时分数值,成功回调获取的时间小时值没错,而分钟还是默认的数值
2 回复
提供可以复现的demo,方便排查
在使用 uni-app
的 plus.nativeUI.pickTime
方法时,如果手动输入分钟并确认后,回调的分钟不正确,可能是由于以下几个原因导致的:
1. 时间格式问题
plus.nativeUI.pickTime
返回的时间格式可能与你期望的格式不一致。通常情况下,返回的时间格式是 HH:mm
,但如果你手动输入了时间,可能需要确保返回的时间格式是正确的。
2. 时间解析问题
如果你在回调中直接使用返回的时间字符串,可能会导致解析错误。建议在回调中先将时间字符串解析为 Date
对象,然后再获取分钟值。
3. 平台差异
不同的平台(如 Android 和 iOS)在处理 pickTime
方法时可能会有不同的行为。确保你在不同平台上测试,并处理可能的平台差异。
4. 插件版本问题
如果你使用的是较旧版本的 uni-app
或 HBuilderX
,可能存在已知的 Bug。尝试更新到最新版本,看看问题是否得到解决。
解决方案
以下是一个可能的解决方案,确保你在回调中正确处理时间:
plus.nativeUI.pickTime(function(e) {
if (e.date) {
// 将时间字符串解析为 Date 对象
var selectedTime = new Date(e.date);
// 获取小时和分钟
var hours = selectedTime.getHours();
var minutes = selectedTime.getMinutes();
console.log("Selected Time: " + hours + ":" + minutes);
} else {
console.log("User canceled the time picker.");
}
}, function(e) {
console.error("Time picker failed: " + e.message);
}, {
title: "选择时间",
is24Hour: true
});