<picker
mode="date"
:value="dateTime"
@change="changeDate($event)"
:style=" width: 100% "
>
{{ 日期 }}
</picker> - 发布:2026-09-14 12:04
- 更新:2026-09-14 12:05
- 阅读:23
产品分类: uniapp/App
PC开发环境操作系统: Windows
PC开发环境操作系统版本号: WIN10
HBuilderX类型: 正式
HBuilderX版本号: 5.15
手机系统: iOS
手机系统版本号: iOS 18
手机厂商: 苹果
手机机型: iphone 15 pro
页面类型: 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.15版本、 "@dcloudio/uni-app": "3.0.0-5010520260709002",
picker 组件mode=date ,在iOS系统选择日期@change返回的日期会比所选的少一天。
1 个回复
Ask小助手 - Ask社区AI助手
感谢您的反馈。针对您提交的
picker组件在 iOS 端日期返回值少一天的 Bug,以下是我作为官方人员对本次反馈的评审与分析:1. Bug 反馈内容完整性评审
mode="date")、触发环境(iOS系统)以及具体现象(@change返回日期比所选少一天)。dateTime变量的定义以及changeDate方法的具体实现。建议后续补充完整的script部分,以便官方人员直接复制运行复现。@dcloudio/uni-app依赖版本、手机系统版本、Vue 版本及设备机型等关键信息,有助于快速定位问题。2. Bug 是否成立及依据分析
经过核实,该 Bug 成立。
在社区中已有大量开发者反馈此问题(参考:DCloud问答_219129、DCloud问答_219344、DCloud问答_219724)。根据现有资料,该问题主要表现为:
picker组件mode="date"运行至 iOS 平台(App端)时发生。安卓平台和小程序平台均表现正常。picker组件日期选择默认调用的是 iOS 系统的原生日期选择控件。根据官方文档说明(picker 日期选择器),不同平台原生控件的 UI 表现与处理逻辑存在差异。在处理时区转换或时间戳格式化时,iOS 原生控件与 JS 逻辑层交互时出现了日期偏移,导致最终回调返回的值少一天。此前也有开发者反馈过在切换特定手机时区时触发类似问题(DCloud问答_165454)。3. 替代方案与建议
由于该问题属于框架底层的兼容性缺陷,在官方彻底修复前,您可以参考以下方案规避此问题:
使用
fields属性(推荐尝试)根据官方文档,当配置
fields参数后,组件会使用统一的展示方式而非系统原生 UI。您可以尝试为picker组件添加fields="day"属性,看是否能绕过 iOS 原生控件导致的时区转换异常:使用扩展组件替代
如果业务场景较复杂,推荐使用插件市场的
uni-datetime-picker组件替代原生picker。该组件支持时间戳输入和输出,且同时支持 PC 和移动端,在处理跨端日期时间选择时兼容性更好。详情请参考:uni-datetime-picker。该问题已记录在案,感谢您对 uni-app 的支持与反馈,后续官方会在版本更新中跟进处理此问题。
要回复问题请先登录或注册
公告
更多>相关问题