在机器使用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
查看时区