在机器使用date命令获取的时间与当前时间一致,但在Java中去获取时间相差了13个小时,这很可能就是机器的时区不太满足当前需要,这时候可以在Java中获取一下时区:
测试机器时区
import java.util.Calendar;
import java.util.TimeZone;
/**
* Test class
*
* @date 2021/2/20
*/
public class Test {
public static void main(String[] args) {
Calendar ca = Calendar.getInstance();
TimeZone tz = ca.getTimeZone();
System.out.println(tz.getID());
}
}
编译:javac Test.java
运行:java Test
输出:US/Eastern
时区不是 Asia/Shanghai ,这就导致了在java程序中获取的时间在 非夏令时段与当前时间相差13个小时,那么如何解决呢?调整机器的时区为 Asia/Shanghai 即可。
命令行输入:dpkg-reconfigure tzdata

- 选择
Asia点击OK

- 选择
Shanghai点击OK
完成上诉步骤即可调整机器时区为 Asia/Shanghai
可以重新运行 java Test 查看时区
本文介绍了在Java程序中获取时间与系统时间相差13小时的问题,原因是系统时区设置为US/Eastern而非Asia/Shanghai。通过调整Linux机器的时区到Asia/Shanghai,可以解决此问题。详细步骤包括使用dpkg-reconfigure tzdata命令,选择Asia,然后选择Shanghai,最后验证调整后的时区设置。
7162

被折叠的 条评论
为什么被折叠?



