<picker
mode="date"
:value="sysDate"
@change="onDateChange"
>
<view>{{sysDate}}</view>
</picker> - 发布:2026-09-14 12:04
- 更新:2026-09-20 17:41
- 阅读:163
产品分类: uniapp/App
PC开发环境操作系统: Windows
PC开发环境操作系统版本号: WIN10
HBuilderX类型: 正式
HBuilderX版本号: 5.26
手机系统: iOS
手机系统版本号: iOS 18
手机厂商: 苹果
手机机型: iphone 15 pro
页面类型: vue
vue版本: vue3
打包方式: 云端
项目创建方式: HBuilderX
示例代码:
操作步骤:
picker @change 打印 e.detail.value
console.log("返回的值11",event.detail.value);
console.log("返回的值22",event);
picker @change 打印 e.detail.value
console.log("返回的值11",event.detail.value);
console.log("返回的值22",event);
预期结果:
选择 2026-10-08时,返回 2026-10-08
选择 2026-10-08时,返回 2026-10-08
实际结果:
选择 2026-10-08时,返回 2026-10-07
选择 2026-10-08时,返回 2026-10-07
bug描述:
HBuilderX 5.26版本、 "@dcloudio/uni-app": "3.0.0-5020620260917001",
picker 组件mode=date ,在iOS系统选择日期@change返回的日期会比所选的少一天。
像下图,在IOS真机上,选择了8号,但是得到的是7号的值
欢迎到专业群( uni-app 官方技术交流群 1 ) 咨询,群中有相关专业的管理员和群友。
感谢您的反馈。针对您提交的 picker 组件在 iOS 端日期返回值少一天的 Bug,以下是我作为官方人员对本次反馈的评审与分析:
1. Bug 反馈内容完整性评审
- BUG 描述:描述清晰,明确指出了组件类型(
mode="date")、触发环境(iOS系统)以及具体现象(@change返回日期比所选少一天)。 - 代码示例:提供了核心的组件代码,但缺少
dateTime变量的定义以及changeDate方法的具体实现。建议后续补充完整的script部分,以便官方人员直接复制运行复现。 - 复现步骤:描述简明扼要,结合代码示例足以让评审人员理解操作流程并成功复现。
- 预期与实际结果:预期结果合理,实际结果确实属于异常现象,排除了误报的可能。
- 分类信息:非常完整,准确包含了 HBuilderX 版本号、
@dcloudio/uni-app依赖版本、手机系统版本、Vue 版本及设备机型等关键信息,有助于快速定位问题。 - 附件说明:由于系统限制,我无法识别和查看附件内容,后续如有需要补充的截图或示例工程,请直接以文本代码块的形式提供。
2. Bug 是否成立及依据分析
经过核实,该 Bug 成立。
在社区中已有大量开发者反馈此问题(参考:DCloud问答_219129、DCloud问答_219344、DCloud问答_219724)。根据现有资料,该问题主要表现为:
- 触发条件:在 HBuilderX 5.x 版本中,使用内置
picker组件mode="date"运行至 iOS 平台(App端)时发生。安卓平台和小程序平台均表现正常。 - 底层原因:在 App 端,
picker组件日期选择默认调用的是 iOS 系统的原生日期选择控件。根据官方文档说明(picker 日期选择器),不同平台原生控件的 UI 表现与处理逻辑存在差异。在处理时区转换或时间戳格式化时,iOS 原生控件与 JS 逻辑层交互时出现了日期偏移,导致最终回调返回的值少一天。此前也有开发者反馈过在切换特定手机时区时触发类似问题(DCloud问答_165454)。
3. 替代方案与建议
由于该问题属于框架底层的兼容性缺陷,在官方彻底修复前,您可以参考以下方案规避此问题:
-
使用
fields属性(推荐尝试)
根据官方文档,当配置fields参数后,组件会使用统一的展示方式而非系统原生 UI。您可以尝试为picker组件添加fields="day"属性,看是否能绕过 iOS 原生控件导致的时区转换异常:<picker mode="date" :value="dateTime" fields="day" @change="changeDate($event)"> {{ 日期 }} </picker>本助手使用国产模型,生成代码可能不准确。专业的代码生成需要全球顶尖的AI Coding模型。推荐使用uni-agent
-
使用扩展组件替代
如果业务场景较复杂,推荐使用插件市场的uni-datetime-picker组件替代原生picker。该组件支持时间戳输入和输出,且同时支持 PC 和移动端,在处理跨端日期时间选择时兼容性更好。详情请参考:uni-datetime-picker。
该问题已记录在案,感谢您对 uni-app 的支持与反馈,后续官方会在版本更新中跟进处理此问题。
能提供一个 demo 吗?或者升级至最新再试试看
-
3***@qq.com (作者)
你好,我升级了程序:HBuilderX 5.26版本、 "@dcloudio/uni-app": "3.0.0-5020620260917001",一样会有该问题,我重新编辑了内容,上传了 IOS日期少一天Demo.rar ,其实就是我贴图中,随便放个日期组件,然后返回就会了
2026-10-05 13:34