DateUtil在使用graalvm打包native之后,会有时区问题
Closed this issue · 2 comments
seepine commented
版本情况
JDK版本: openjdk_17
hutool版本: 5.8.27(请确保最新尝试是否还有问题)
问题描述(包括截图)
- 复现代码
在linux环境上海时区,代码也设置了默认时区 TimeZone.setDefault(TimeZone.getTimeZone("Asia/Shanghai"));
DateUtil.date能够获取正确当前时间,转字符串后,会重复增加时区
System.out.println("DateUtil.date " + DateUtil.date());
System.out.println("DateUtil.now " + DateUtil.now());
var date = DateUtil.parse("2024-04-30 00:02:05");
var startTime = DateUtil.beginOfDay(date).toStringDefaultTimeZone();
var endTime = DateUtil.endOfDay(date).toStringDefaultTimeZone();
比如报错的Excel文件,有问题的图片等。
looly commented
我本地使用GraalVM
确实没有复现,猜测:
- DateUtil.now()使用缓存中的format,你修改了defaultTimeZone,但是缓存中未修改。
因此尝试手动设置下DateTime的timezone试下。
var date = DateUtil.parse("2024-04-30 00:02:05")
date.setTimeZone(TimeZone.getTimeZone("Asia/Shanghai"));
date.toString();
seepine commented
我本地使用
GraalVM
确实没有复现,猜测:
- DateUtil.now()使用缓存中的format,你修改了defaultTimeZone,但是缓存中未修改。
因此尝试手动设置下DateTime的timezone试下。
var date = DateUtil.parse("2024-04-30 00:02:05") date.setTimeZone(TimeZone.getTimeZone("Asia/Shanghai")); date.toString();
使用quarkus打包graalvm,新建个干净的quarkus项目试试