现在的位置: 首页 > 综合 > 正文

关于java时区问题

2014年11月27日 ⁄ 综合 ⁄ 共 891字 ⁄ 字号 评论关闭

在java应用,java API 提高了足够多的类来满足我们的开发要求。比如日期。但有时会熟视无睹,导致在程序中埋下bug.以举例子说明

  String fromFormat = "yyyy-MM-dd HH:mm:ss";
  SimpleDateFormat  format = new SimpleDateFormat (fromFormat);
  Date myDate = new Date();
  TimeZone zone = TimeZone.getTimeZone("GMT+8");
  format.setTimeZone(zone);
  System.out.println( format.format(myDate)); 
  TimeZone sysTimezone = TimeZone.getDefault();
  //sun.util.calendar.ZoneInfo[id="GMT",offset=0,dstSavings=0,useDaylight=false,transitions=0,lastRule=null]
  System.out.println( sysTimezone );
  Calendar calendar = new GregorianCalendar();
  Calendar   cal=Calendar.getInstance();

上面是一段可以直接运行的代码。跟时区有关。在java.util.Date这个类,我们可以通过new Date().getTime()即零时区1970起的毫秒总数。这个是跟时区没有关系的。只有转具体时区时才会因时区不同显示时间不同。如在中国是东8取可以取得时区  TimeZone zone = TimeZone.getTimeZone("GMT+8").

为什么需要这样做?因为java 提高的默认是GMT+0为标准时区,如  Calendar calendar = new GregorianCalendar();
  Calendar   cal=Calendar.getInstance();

在国际化程序须留意时区问题。 如果时间都转成long 也是个不错的主意。

抱歉!评论已关闭.