我正在try 获得一个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()}")

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

以下是指向代码示例的链接

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

推荐答案

这些方法不会修改ZonedDateTime实例.他们会退回新的.java.time个班级使用immutable objects.

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

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()}")

Java相关问答推荐

无法在Java中将hhmmss格式的时间解析为LocalTime

基于仅存在于父级中的字段查询子文档?

确定Java中Math.Ranb()输出的上限

Hibernate 6支持Joda DateTime吗?

为什么不应用类型推断?

Hibernate EmptyInterceptor可以工作,但不能拦截器

使用多个RemoteDatabase对象的一个线程

Java17支持哪个MapR版本?

Instancio未在日志(log)中显示测试失败消息

二进制数据的未知编码/序列化

一对多关系和ID生成

是否有一个Java Future实现可以在池繁忙时在调用者线程中执行?

如果List是一个抽象接口,那么Collectors.toList()如何处理流呢?

如何在IntelliJ IDEA的Build.sbt中添加外部JAR文件?

没有Tomcat,IntelliJ如何在本地运行API?

Java List有一个在一个位置添加多个元素的方法,但我找不到一个在一个位置删除多个元素的方法

读取ConcurrentHashMap中的可变对象

如何使用java区分以下结果

睡眠在 Spring Boot 中

移动二维数组的行