向 ZonedDateTime 添加天数不会更改时间

tyc*_*czj 4 java kotlin zoneddatetime

我试图获取一个实例,ZonedDateTime然后添加 1 天,然后我想知道 UTC 的工厂时间,但是当我使用时,plusDays时间保持不变,我不确定为什么

这就是我正在做的

val zdt: ZonedDateTime = ZonedDateTime.now()

println("${zdt.toInstant().toEpochMilli()}")

zdt.plusDays(1)

println("${zdt.toInstant().toEpochMilli()}")

zdt.withHour(0)
zdt.withMinute(0)
zdt.withSecond(0)

println("${zdt.toInstant().toEpochMilli()}")
Run Code Online (Sandbox Code Playgroud)

所有打印语句都打印出相同的值,我在这里缺少什么?

这是代码示例的链接

https://pl.kotl.in/QmlXRd-HM

Jor*_*orn 9

这些方法不会修改ZonedDateTime实例。他们返回新的。java.time类使用不可变对象

要修复您的代码,请更新变量:

var zdt: ZonedDateTime = ZonedDateTime.now()
println("${zdt.toInstant().toEpochMilli()}")
zdt = zdt.plusDays(1)
println("${zdt.toInstant().toEpochMilli()}")
zdt = zdt.withHour(0).withMinute(0).withSecond(0)
println("${zdt.toInstant().toEpochMilli()}")
Run Code Online (Sandbox Code Playgroud)