You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Material DateRangePicker中设置可选日期区间(minDate与maxDate)?

为Material DateRangePicker设置可选日期区间

要限制DateRangePicker的可选日期范围,你需要通过CalendarConstraints来定义约束规则,具体实现步骤如下:

  • 创建CalendarConstraints.Builder实例,用于配置日期限制条件
  • 调用setStart()和setEnd()方法,分别传入允许选择的最小、最大日期的UTC时间戳
  • 将构建好的CalendarConstraints通过MaterialDatePicker.Builder的setCalendarConstraints()方法传入Picker

完整代码示例

// 1. 定义允许选择的最小和最大日期(示例为2024年全年,可按需调整)
val minDate = Calendar.getInstance().apply {
    set(2024, Calendar.JANUARY, 1)
}.timeInMillis

val maxDate = Calendar.getInstance().apply {
    set(2024, Calendar.DECEMBER, 31)
}.timeInMillis

// 2. 构建日期约束
val dateConstraints = CalendarConstraints.Builder()
    .setStart(minDate)
    .setEnd(maxDate)
    .build()

// 3. 创建并配置DateRangePicker
val dateRangePicker = MaterialDatePicker.Builder.dateRangePicker()
    .setTitleText(getString(R.string.calendar_select_dates))
    .setSelection(...)
    .setCalendarConstraints(dateConstraints) // 关键:绑定日期范围约束
    .build()

补充:用LocalDate转换时间戳(API 26+或兼容库)

如果项目使用Java 8+的时间API,可直接用LocalDate转换为UTC时间戳:

import java.time.LocalDate
import java.time.ZoneOffset

val minLocalDate = LocalDate.of(2024, 1, 1)
val minDate = minLocalDate.atStartOfDay(ZoneOffset.UTC).toInstant().toEpochMilli()

val maxLocalDate = LocalDate.of(2024, 12, 31)
val maxDate = maxLocalDate.atStartOfDay(ZoneOffset.UTC).toInstant().toEpochMilli()

内容的提问来源于stack exchange,提问作者TinaTT2

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.08 11:45:58