uni-app 日期选择设置了‘粒度’之后 时间只能选到1960年 设置起始时间等无效

uni-app 日期选择设置了‘粒度’之后 时间只能选到1960年 设置起始时间等无效

测试过的手机

iPhone XR 华为

示例代码

<pickermode="date":value="date"fields="day":start="startDate":end="endDate"@change="bindDateChange">
<viewclass="uni-input">{{date}}</view>
</picker>

操作步骤

<pickermode="date":value="date"fields="day":start="startDate":end="endDate"@change="bindDateChange">
<viewclass="uni-input">{{date}}</view>
</picker>

预期结果

设置之后可以自由选择时间 而不是只能选择1960 之后的

实际结果

设置之后 只能选择1960 之后的

bug描述

日期选择设置了‘粒度’ 之后 时间只能选到1960 年 设置起始时间啥的无效


| 信息项         | 内容           |
|----------------|----------------|
| 产品分类       | uniapp/App     |
| PC开发环境     | Mac            |
| PC开发环境版本 | 10.12          |
| 开发工具类型   | 正式           |
| 开发工具版本   | 3.1.16         |
| 手机系统       | 全部           |
| 手机厂商       | 华为           |
| 页面类型       | vue            |
| 打包方式       | 云端           |
| 项目创建方式   | HBuilderX      |

更多关于uni-app 日期选择设置了‘粒度’之后 时间只能选到1960年 设置起始时间等无效的实战教程也可以访问 https://www.itying.com/category-93-b0.html

12 回复

将manifest.json中nvueCompiler设置为"weex" 就能解决.

更多关于uni-app 日期选择设置了‘粒度’之后 时间只能选到1960年 设置起始时间等无效的实战教程也可以访问 https://www.itying.com/category-93-b0.html


好的。完事我试试 谢谢

是使用的hello-uniapp测试的吗?使用3.1.21测试没有发现此问题,可否提供一份复现的demo

是使用hello-uniapp进行测试的 我使用的是3.1.18 我更新下版本试试

麻烦帮忙看下 谢谢 以下是截图 需要我给hello-uniapp压缩么?


这是只往上加了一个fields="day"就会出现这个情况?

回复 DCloud_UNI_LXH: 是的 在我项目中出现了 这个情况 我就在hello-uniapp里面试了试 结果一样都是只能选到1960

回复 小人物115: 手机什么型号的,Android什么版本?我测试了iOS14,Android 11,Android 8。都没有发现这个情况

回复 DCloud_UNI_LXH: 目前测试了 iPhone XR iOS 14.6, 华为 honor9 安卓9 。 是不是因为我这个项目是老项目导致的?我需要新建项目试试么?

回复 小人物115: 查看一下你出问题项目manifest.json中nvueCompiler是否配置?如果配置,配置的是什么?

回复 DCloud_UNI_LXH: 配置的是 “nvueCompiler” : “uni-app”,

这是 uni-app 中日期选择器的常见问题。问题出在 fields="day" 这个粒度设置上。

当设置 fields="day" 时,uni-app 内部会使用 iOS/Android 原生的日期选择器组件。这些原生组件有默认的时间范围限制,iOS 的 UIDatePicker 默认最小日期就是 1900 年1月1日,最大日期是 4001年12月31日。

解决方案:

  1. 移除 fields 属性:如果不特别指定 fields,uni-app 会使用自己的日期选择器,这时 startend 参数就能正常生效。

  2. 如果需要精确到天的选择,可以这样调整代码:

<picker mode="date" :value="date" :start="startDate" :end="endDate" @change="bindDateChange">
    <view class="uni-input">{{date}}</view>
</picker>
  1. 确保 startDate 格式正确:起始日期必须是 YYYY-MM-DDYYYY/MM/DD 格式,例如:
data() {
    return {
        startDate: '1900-01-01',
        endDate: '2100-12-31',
        date: ''
    }
}
回到顶部