在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 也是个不错的主意。 |
|