``` <picker mode="date" @change="onChangeDate"> </picker>``` - 发布:2026-04-03 12:35
- 更新:2026-04-03 12:48
- 阅读:52
产品分类: uniapp/App
PC开发环境操作系统: Mac
PC开发环境操作系统版本号: 26.3.1
HBuilderX类型: 正式
HBuilderX版本号: 5.06
手机系统: iOS
手机系统版本号: iOS 26
手机厂商: 苹果
手机机型: iPhone 11
页面类型: vue
vue版本: vue3
打包方式: 云端
项目创建方式: HBuilderX
示例代码:
操作步骤:
picker @change 打印 e.detail.value
picker @change 打印 e.detail.value
预期结果:
选择 2026-04-03时,返回 2026-04-03
选择 2026-04-03时,返回 2026-04-03
实际结果:
选择 2026-04-03时,返回 2026-04-02
选择 2026-04-03时,返回 2026-04-02
bug描述:
HBuilderX 5.x版本中picker组件mode="date"时在iOS系统选择日期@change返回的日期会比所选的往前一天,
ios app
当我把hbuilderx版本切换到4.x版本,@change返回的日期就是正常的,我尝试了5.05与5.06版本,均有这个问题。请查一下
作为DCloud官方人员,我对这个bug反馈进行如下评审:
一、反馈完整性评价
该bug反馈整体较为完整,包含以下有效信息:
- 明确的版本对比(4.x正常 vs 5.x异常),有助于快速定位回归问题
- 具体的版本号(5.05、5.06)和设备信息(iPhone 11、iOS 26)
- 清晰的预期与实际结果对比
建议补充的信息:
- 是否使用云端打包(根据优先知识库,HBuilderX 4.41+已升级XCode 26环境)
- 具体的时区设置(手机系统时区是否为东八区)
- value属性的初始值设置情况
- 是否配置了fields参数(根据知识库,fields会影响展示方式)
二、Bug成立性分析
根据知识库信息分析,该Bug成立,可能原因如下:
-
iOS SDK升级影响:根据优先知识库,从2026年3月12日起HBuilderX 4.41及以上版本云端打包环境已升级为XCode 26(iOS 26 SDK)。用户反馈的iOS 26系统版本与此次升级对应,可能是iOS 26 SDK中UIDatePicker的行为变更导致日期解析出现时区偏移。
-
原生控件特性:根据结构化文档知识库,picker组件在App端调用的是OS原生日期选择控件。不同iOS SDK版本对日期选择器的时区处理逻辑可能存在差异,特别是在跨时区场景下(如UTC与本地时间转换)。
三、临时解决方案
在官方修复前,建议采用以下替代方案(基于知识库):
-
使用uni-datetime-picker组件:
该组件支持时间戳输入输出,可同时选择日期和时间,且使用自定义UI而非系统原生选择器,可规避iOS原生控件的兼容性问题。uni-datetime-picker文档 -
使用插件市场替代组件:
可考虑使用插件市场的日期选择器组件,如g-date-picker或日期+时间的picker选择器,这些组件通常使用自定义实现,不受系统原生控件变更影响。
四、后续建议
建议官方在HBuilderX后续版本中针对iOS 26 SDK下的picker日期处理进行时区兼容性修复,特别是检查NSDate与字符串转换过程中的时区偏移计算逻辑。