今天测试发现了一个bug,说前端从后台获取的展示的时间少了8小时,可我代码本地测试是完全没问题的。 程序中代码如下,获取当前时间的毫秒值
LocalDateTime.now().atZone(ZoneOffset.of("+8")).toInstant().toEpochMilli()
System.out.println(LocalDateTime.now(ZoneOffset.of("+8")).toInstant(ZoneOffset.of("+8")).toEpochMilli());
System.out.println(System.currentTimeMillis());
发现此时时间是正确的。在服务器上执行
date -R
发现时间没有问题。检查服务器上timezone和localtime,发现timezone配置为Etc/UTC,查看LocalDateTime.now()的api文档,此api读取timezone配置来生成时间,修改timezone为Asia/Shanghai后时间获取正常。