收藏
回答

关于组件picker mode = time 时间选择器返回结果格式问题

框架类型 问题类型 API/组件名称 终端类型 微信版本 基础库版本
小程序 Bug picker 微信iOS客户端 8.0.24 2.25.0

部分ios系统手机,通过日志查看,可复现机型包括:

1."model":"iPhone 13 Pro<iPhone14,2>","system":"iOS 15.5"

2."model":"iPhone X (GSM+CDMA)<iPhone10,3>","system":"iOS 15.4"

还包括iPhone 11 Pro max,iPhone 12 Pro max,iPhone 13 Pro max等部分机型

当ios手机把手机日期格式设置成12小时制时,

返回结果是:下午3:39,上午10:47 不是预期的 "hh:mm" 格式,

其中上午12点是指凌晨,这个问题存在了很长时间了,最近才得到重视,复现到了这个问题,

/**
 * 处理时间格式
 * @param { string } time 时间
 */
timeFormatProcessing(time) {
    // 补零
    const formatNumber = n => {
    n = n.toString()
    return n[1] ? n : '0' + n
    };
    var newTime, timeArr;
    if (time.includes('上午')) {  // 判断是否存在上午字段
    newTime = time.replace('上午''');  // 清除上午字段
    timeArr = newTime.split(':');  // 分割
    // 处理上午12点是凌晨的问题
    if(+timeArr[0] == 12){
        timeArr[0] = 0;
    }
    // 格式化时间并返回
    return `${timeArr.map(formatNumber).join(':')}:00`
    } else if (time.includes('下午')) {  // 判断是否存在上午字段
    newTime = time.replace('下午''');  // 清除上午字段
    timeArr = newTime.split(':');  // 分割
    // 处理下午时间的问题,下午12点不用处理
    if(+timeArr[0] < 12){
        timeArr[0] = +timeArr[0] + 12;
    }
    // 格式化时间并返回
    return `${timeArr.map(formatNumber).join(':')}:00`
    } else {  // 正常 "hh:mm" 格式,返回
    return `${time}:00`;
    }
},

这是我临时写的处理方式,希望广大网友指正。

同时希望可以得到官方说明。

回答关注问题邀请回答
收藏

2 个回答

  • Demons
    Demons
    2022-07-14

    你好是不是ios13及以下设备且设置中关闭了24小时制才出现的

    2022-07-14
    有用
    回复 5
    • 那棵树
      那棵树
      2022-07-14
      是设置中关闭了24小时制,苹果13也有这样的问题,但是系统版本system:iOS 15.1的没有复现,发现有问题的包含系统版本system:iOS 15.4 iOS 15.5
      2022-07-14
      回复
    • 那棵树
      那棵树
      2022-07-14
      苹果13软件版本15.5的有发现
      2022-07-14
      回复
    • 物ぃ语
      物ぃ语
      2022-07-14
      你好,苹果11  iOS 15.5 也复现,请问解决了吗
      2022-07-14
      回复
    • 那棵树
      那棵树
      2022-07-14回复物ぃ语
      这个问题应该需要官方修复,我在最下边写了一个临时的处理方式,你可以试试
      2022-07-14
      回复
    • 物ぃ语
      物ぃ语
      2022-07-14回复那棵树
      嗯,谢谢大佬
      2022-07-14
      回复
  • 乐柠
    乐柠
    2022-09-09

    你好 苹果12 iOS 14.2也复现了,选择上午12:00,e.detail.value中的值为00:00,这个要怎么解决

    2022-09-09
    有用
    回复
登录 后发表内容