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]# 

  聯系印尼方測試成功!!!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM