黑马程序员技术交流社区

标题: 关于java时区问题? [打印本页]

作者: sunyue    时间: 2015-5-4 09:38
标题: 关于java时区问题?
在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 也是个不错的主意。




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2