【问题标题】:How can I set current date (Today's date) same as selected date in Material Date Picker Android如何将当前日期(今天的日期)设置为与 Material Date Picker Android 中的选定日期相同
【发布时间】:2022-02-02 14:05:15
【问题描述】:

如何将当前日期(今天的日期)设置为我的本地日期。我的时区是 GMT+07:00。我只能设置 setSelection() 日期,但不能设置当前日期。 (对不起,我的任何语法错误,提前谢谢你) Calendar image

  val c = Calendar.getInstance(TimeZone.getTimeZone("GMT+07:00"))
        val gmtTime: Long = c.getTime().getTime()
        c.setTimeZone(TimeZone.getTimeZone("Asia/Bangkok"));
        val timezoneThailand: Long = gmtTime + TimeZone.getTimeZone("Asia/Bangkok").rawOffset
        c.setTimeInMillis(timezoneThailand)
        val year = c.get(Calendar.YEAR)
        val month = c.get(Calendar.MONTH)
        val day = c.get(Calendar.DAY_OF_MONTH)

//        view.chooseDateButton.text = c.toString()
        val calendarConstraintBuilder = CalendarConstraints.Builder()
        calendarConstraintBuilder.setStart(1640995200000)
        calendarConstraintBuilder.setEnd(1646092800000)
        calendarConstraintBuilder.setValidator(DateValidatorPointBackward.now());

        val materialDateBuilder = MaterialDatePicker.Builder.datePicker()
        materialDateBuilder.setTitleText("SELECT DATE TO SHOW IMAGES");

        materialDateBuilder.setSelection(c.timeInMillis)

//        materialDateBuilder.setTheme(R.style.DefaultDatePickerTheme)

        materialDateBuilder.setCalendarConstraints(calendarConstraintBuilder.build())
        val materialDatePicker : MaterialDatePicker<*> = materialDateBuilder.build()

【问题讨论】:

  • 它默认使用当前日期作为初始选择,因此您根本不必调用setSelection()。您还可以使用 MaterialDatePicker.todayInUtcMilliseconds() 将当前日期作为 Long 传递给 setSelection
  • 我的意思是初始选择与我的真实本地日期不匹配,初始当前日期也不匹配。
  • 关闭一天了吗?您确定您的设备设置为正确的日期吗?它使用 UTC,因此您的时间线应该无关紧要。
  • 是的,它会提前一天关闭。我很困惑我的设备设置绝对正确。 link
  • 我当前的代码(上面的代码)是正确的日期,只选择了日期(绿色圆圈),但我想设置新的黑色空心圆圈日期。

标签: java android kotlin calendar material-design


【解决方案1】:

我可能是错的,但我认为您根本不需要担心时区。这一切都是自动处理的。删除与您的日历 c 相关的所有代码,然后使用

进行选择
materialDateBuilder.setSelection(Calendar.getInstance().timeInMillis)

【讨论】:

  • This is the result image 我已经尝试过该代码。谢谢,但它与我当地的日期不匹配。我只想设置一个新的当前日期。
  • 当我使用materialDateBuilder.setSelection(c.timeInMillis) 选择日期(绿色圆圈)但我无法设置当前日期(黑色空心圆圈)时,它绝对匹配。 IMAGE LINK
  • @zEPHOP 啊,我误会了。我认为所选日期对您来说是错误的。对不起,我看错了。当前日期只是当前日期。你无法改变这一点。它可能需要您设备的日期。你不能以编程方式改变它
  • 感谢您提供的有用信息
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多