Java Android日历不显示一天的开始,00:00:00
我正在尝试为一天的开始或00:00:00创建日历对象 这是我的密码Java Android日历不显示一天的开始,00:00:00,java,android,kotlin,Java,Android,Kotlin,我正在尝试为一天的开始或00:00:00创建日历对象 这是我的密码 val calendarStart = Calendar.getInstance(TimeZone.getTimeZone("EST"), Locale.US) calendarStart.time = Date() calendarStart[Calendar.HOUR] = 0 calendarStart[Calendar.HOUR_OF_DAY] = 0 cale
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,以及我如何创建一天的开始日历吗
***更新***
斯纳希姆给出的答案是正确的,确实解决了这个问题。但是,我选择使用以下代码:
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())
请注意,您正在尝试获取
EST
时区,并且日志显示EDT
时区-1h的差异,就像您的情况一样
根据
EST
的说法,安卓系统不使用夏令时。尝试使用getTimeZone(“美国/纽约”)
你想用什么值开始日历?哈哈!是的,嗯。。。我的错。是的,这确实纠正了问题。但是,我最终还是这样做了: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.atzoneid.systemDefault())val endDate=Date.from(zdtEnd.toInstant())