我输入的是19.12.0009,预计12月19日00:00:00HKT 9,但返回的是12月21日00:23:18香港时间9,为什么? 代码如下:

DateTimeFormatter formatter = DateTimeFormatter.ofPattern("dd.MM.uuuu")
                        .withResolverStyle(ResolverStyle.STRICT);
LocalDate localDate = LocalDate.parse("19.12.0009", formatter);
Instant instant = Instant.from(localDate.atStartOfDay(ZoneId.of("Asia/Hong_Kong")));
Date resultDate = Date.from(instant);
System.out.println("resultDate" + resultDate);

推荐答案

ZoneRules中有过渡的概念,在里面有savingsLocalTransitions.我计算出,出于某种原因(可能是历史原因),"Asia/Hong_Kong"次本地过渡中节省的资金从1904-10-30T00:36:42次开始.ResolverStyle.STRICT不是这里的问题!

这就是你看到00:23:18 HKT 9的原因.

如果您更改代码,例如:

LocalDate localDate = LocalDate.parse("19.12.1904", formatter);

预计输出为:

resultDate Mon Dec 19 01:00:00 JST 1904

Java相关问答推荐

Gmail Javi API批量处理太多请求

在Spring Boot中测试时出现SQL语法错误

Maven Google Sheets版本问题

Java 8中的多个字段和计数

Java List with all combinations of 8 booleans

试着做一个2x2的魔方求解算法,我如何找到解路径(DFS)?

在Java中如何从Executors.newFixedThreadPool(MAX_THREAD_COUNT())迁移到虚拟线程

将java.util.Date转换为OffsetDateTime

对字符串长度进行排序,但颠倒了顺序(最长字符串在前)

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

SpringBoot:在条件{Variable}.isBlank/{Variable}.isEmpty不起作用的情况下进行路径变量验证

一对多关系和ID生成

组合连接以从两个表返回数据

将java.util.Date(01.01.0001)转换为java.time.LocalDate将返回29.12.0000

JavaFX复杂项目体系 struct

如何对存储为字符串的大数字数组进行排序?

TinyDB问题,无法解析符号';上下文&

如何使用Rascal Evaluator从编译的JAR访问Rascal函数?

ResponseEntity.控制器截断响应的JSON部分

如何使用命令行为Java应用程序生成烟雾测试用例