Android日历不显示一天的开始时间00:00:00

时间:2020-07-28 03:27:51

标签: java android kotlin

我正在尝试为一天的开始或00:00:00创建一个Calendar对象

这是我的代码。

    val calendarStart = Calendar.getInstance(TimeZone.getTimeZone("EST"), Locale.US)
    calendarStart.time = Date()
    calendarStart[Calendar.HOUR] = 0
    calendarStart[Calendar.HOUR_OF_DAY] = 0
    calendarStart[Calendar.MINUTE] = 0
    calendarStart[Calendar.SECOND] = 0
    calendarStart[Calendar.MILLISECOND] = 0
    val utcStartDate = calendarStart.time

    val calendarEnd = Calendar.getInstance(TimeZone.getTimeZone("EST"), Locale.US)
    calendarEnd[Calendar.HOUR_OF_DAY] = 23
    calendarEnd[Calendar.MINUTE] = 59
    calendarEnd[Calendar.SECOND] = 59
    calendarEnd[Calendar.MILLISECOND] = 999
    val utcEndDate = calendarEnd.time

结束日期似乎还可以,但是开始日期显示为01:00:00,如调试器日志的屏幕截图所示。

有人可以向我解释为什么它显示为1:00:00以及如何创建一天的开始日历吗?

enter image description here

*** 更新 ***

#snachmsm给出的答案是正确的,并且确实解决了问题。但是,我选择改用以下代码:

    val dayStart: LocalDateTime = now.with(LocalTime.MIN)
    val zdtStart: ZonedDateTime = dayStart.atZone(ZoneId.systemDefault())
    val startDate = Date.from(zdtStart.toInstant())

    val dayEnd: LocalDateTime = now.with(LocalTime.MAX)
    val zdtEnd: ZonedDateTime = dayEnd.atZone(ZoneId.systemDefault())
    val endDate = Date.from(zdtEnd.toInstant())

1 个答案:

答案 0 :(得分:1)

请注意,您正在尝试获取EST时区,并且日志显示EDT时区-与您的情况相差1h

根据Android中的THIS EST,不使用夏令时。尝试使用getTimeZone("America/New_York")