• Jvm中时区设置方式


    这篇文章memo一下Jvm中关于时区设定的基础操作。

    Java的时区设定

    这里列出如下三种方式

    方式

    说明

    TimeZone.setDefault方式

    通过java的utils下的TimeZone进行动态设定

    user.timezone传递方式

    运行时通过传递-Duser.timezone=xxx进行设定

    TZ环境变量方式

    通过export的TZ环境变量进行设定

    TimeZone.setDefault方式

    Sample代码如下:

    sh-4.2# cat TestTimeZone.java
    import java.util.Date;
    import java.text.SimpleDateFormat;
    import java.util.TimeZone;
    
    public class TestTimeZone {
      public static void main(String[] args) {
        System.out.println(TimeZone.getDefault()); 
        SimpleDateFormat dfOld = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        System.out.println(dfOld.format(new Date()));
    
        //final TimeZone timeZone = TimeZone.getTimeZone("GMT+8");
        final TimeZone timeZone = TimeZone.getTimeZone("Asia/Shanghai");
        TimeZone.setDefault(timeZone);
        System.out.println(TimeZone.getDefault()); 
        SimpleDateFormat dfNew = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        System.out.println(dfNew.format(new Date()));
    
      }
    }
    sh-4.2#
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21

    结果确认

    sh-4.2# unset TZ
    sh-4.2# java TestTimeZone
    sun.util.calendar.ZoneInfo[id="UTC",offset=0,dstSavings=0,useDaylight=false,transitions=0,lastRule=null]
    2018-08-08 00:02:05
    sun.util.calendar.ZoneInfo[id="Asia/Shanghai",offset=28800000,dstSavings=0,useDaylight=false,transitions=19,lastRule=null]
    2018-08-08 08:02:05
    sh-4.2#
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    user.timezone传递方式

    同样的代码,不同之处在与运行态改变状态,适用场景为不需改变代码,与前一种方式一样,只要系统状态OK,此处即OK

    sh-4.2# unset TZ
    sh-4.2# java -Duser.timezone=Asia/Shanghai TestTimeZone
    sun.util.calendar.ZoneInfo[id="Asia/Shanghai",offset=28800000,dstSavings=0,useDaylight=false,transitions=19,lastRule=null]
    2018-08-08 08:03:25
    sun.util.calendar.ZoneInfo[id="Asia/Shanghai",offset=28800000,dstSavings=0,useDaylight=false,transitions=19,lastRule=null]
    2018-08-08 08:03:25
    sh-4.2#
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    TZ环境变量方式

    同样的代码,适用场景为不需改变代码,与前一种方式一样,只要系统状态OK,此处即OK

    sh-4.2# export TZ=Asia/Shanghai
    sh-4.2# java TestTimeZone
    sun.util.calendar.ZoneInfo[id="Asia/Shanghai",offset=28800000,dstSavings=0,useDaylight=false,transitions=19,lastRule=null]
    2018-08-08 08:04:02
    sun.util.calendar.ZoneInfo[id="Asia/Shanghai",offset=28800000,dstSavings=0,useDaylight=false,transitions=19,lastRule=null]
    2018-08-08 08:04:02
    sh-4.2#
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
  • 相关阅读:
    【Docker镜像】Docker的容器镜像管理
    ADC、DMA以及串口之间的联系和区别?
    详解react生命周期和在父子组件中的执行顺序
    php发送get、post请求的6种方法简明总结?
    【测试面试】测试开发面试算法高频题,这些题你会多少?
    百度给创新员工发2000w奖金........
    FFmpeg -r 放在 -i 前后的区别
    动手学TCP——CS144实验感想
    Qt第二十七章:QWidget、QMainWindow自定义标题栏并自由移动缩放
    iOS weex App 分析记录
  • 原文地址:https://blog.csdn.net/m0_54850467/article/details/126743527