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-appplus.nativeUI.pickTime 方法时,如果手动输入分钟并确认后,回调的分钟不正确,可能是由于以下几个原因导致的:

1. 时间格式问题

plus.nativeUI.pickTime 返回的时间格式可能与你期望的格式不一致。通常情况下,返回的时间格式是 HH:mm,但如果你手动输入了时间,可能需要确保返回的时间格式是正确的。

2. 时间解析问题

如果你在回调中直接使用返回的时间字符串,可能会导致解析错误。建议在回调中先将时间字符串解析为 Date 对象,然后再获取分钟值。

3. 平台差异

不同的平台(如 Android 和 iOS)在处理 pickTime 方法时可能会有不同的行为。确保你在不同平台上测试,并处理可能的平台差异。

4. 插件版本问题

如果你使用的是较旧版本的 uni-appHBuilderX,可能存在已知的 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
});
回到顶部
AI 助手
你好,我是IT营的 AI 助手
您可以尝试点击下方的快捷入口开启体验!