我正在尝试为一天的开始或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以及如何创建一天的开始日历吗?
*** 更新 ***
#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())
答案 0 :(得分:1)
请注意,您正在尝试获取EST
时区,并且日志显示EDT
时区-与您的情况相差1h
根据Android中的THIS EST
,不使用夏令时。尝试使用getTimeZone("America/New_York")