Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/345.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Android日历不显示一天的开始,00:00:00_Java_Android_Kotlin - Fatal编程技术网

Java Android日历不显示一天的开始,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

我正在尝试为一天的开始或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
    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())