您的位置:首页 > 编程语言 > Java开发

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

2017-09-27 14:17 477 查看
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]#


  联系印尼方测试成功!!!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: