• Java设置jre通过java new Date()得到的时间的时区


    1、前提

      由于公司有印尼的项目,该项目仅对印尼当地开放使用(公司在国内,用的是阿里云的ECS,但是阿里云在印尼没有服务器,所以就买了新加坡的服务器),印尼当地人用的是东七区的时间,所以比国内东八区的时间早一个小时。一开始只是修改了阿里云ECS服务器的系统时间为东七区的时间,但是实际项目获取到的时间仍是东八区时间。

    2、动手

      因为之前已经修改了系统的时区为东七区,但是java程序获得的时间还是东八区的时间。查阅相关资料和问了开发的同事之后,做了如下修改:

      1、修改修改/tomcat/bin/catalina.sh,添加如下的参数:

    JAVA_OPTS="$JAVA_OPTS -Duser.timezone=GMT+7"  #在东几区就+几

      2、修改/etc/timezone文件

      这个是因为我修改上面的操作之后运行java程序获取的时区还是东八区的,要获取东八区必须加指定参数”-Duser.timezone=GMT+7”,询问了开发之后,表示java程序是通过/etc/timezone文件获取时区的。

    cat /etc/timezone 
    Asia/Jakarta

      为此还专门写了一个java类来获取时间:

    import java.text.DateFormat;
    import java.text.SimpleDateFormat;
    import java.util.Calendar;
    import java.util.Date;
    import java.util.TimeZone;
    
    public class Test {
    
    
        public static void main(String[] a) {
            DateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");//设置日期格式
            System.out.println(df.format(new Date()));// new Date()为获取当前系统时间
    
    
            Calendar cal = Calendar.getInstance();
            TimeZone timeZone = cal.getTimeZone();
            System.out.println(timeZone.getID());
            System.out.println(timeZone.getDisplayName());
        }
    }
    View Code

      测试:

    [root@iZt4nbfbkurxm1k2bmdsqvZ bin]# javac Test.java 
    [root@iZt4nbfbkurxm1k2bmdsqvZ bin]# java Test
    2017-09-27 13:15:45
    Asia/Jakarta
    West Indonesia Time
    [root@iZt4nbfbkurxm1k2bmdsqvZ bin]# 

      联系印尼方测试成功!!!

  • 相关阅读:
    Chapter 23: Termination Handlers(2)Understanding Termination Handlers by Example(6)
    【原】常用HTML
    [导入]化州特产~
    [导入]又大一岁,自己祝自己生日快乐~
    [导入]新视觉LOGO~
    [导入]看清楚中国移动的新旧资费
    [导入]AJAX .NET版本之间的区别
    泛型简介
    关于MongoDB的group分组
    【javascript继承】之——原型链继承和类式继承
  • 原文地址:https://www.cnblogs.com/jie-fang/p/7601536.html
Copyright © 2020-2023  润新知