TimeZone timeZone = null;
try {
timeZone = TimeZone.getTimeZone("GMT") ;// #1
//timeZone = TimeZone.getDefault();;// #2
} catch (Exception e) {
}
Calendar gc = GregorianCalendar.getInstance(timeZone);
System.out.println(new SimpleDateFormat("yyyy-MM-dd HH:MM:SS").format(gc.getTime()));
怎么用#1和#2的timeZone,输出的时间都是一样的呢???
System.out.println(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(gc.getTime()));时间不对是应为这个format也要设置时区:
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss") ;
sdf.setTimeZone(timeZone);
System.setProperty("user.timezone", "GTM");
Calendar gc = GregorianCalendar.getInstance();
//System.out.printf("%tF %tT", gc.getTime(), gc.getTime());
System.out.println(new SimpleDateFormat("yyyy-MM-dd HH:MM:SS").format(gc.getTime()));//要么像1L说的,打印的时候也设置timezone
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss") ; //因为这里的SimpeDateFormat对象也有自己的timezone
sdf.setTimeZone(timeZone);
System.out.println(sdf.format(gc.getTime()));
try {
timeZone = TimeZone.getTimeZone("GMT") ;// #1
//timeZone = TimeZone.getDefault();;// #2
} catch (Exception e) {
}
Calendar gc = GregorianCalendar.getInstance(timeZone);
System.out.println(gc.getTimeZone()); //外部calendar的timezone
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:MM:SS");
Calendar c = sdf.getCalendar(); //内部calendar
System.out.println(c.getTimeZone()); //内部calendar的timezone
//sdf.setCalendar(gc); //改变内部calendar也可以
sdf.setTimeZone(timeZone); //改变内部calendar的timezone
System.out.println(sdf.format(gc.getTime()));
System.out.println(sdf.format(sdf.getCalendar().getTime()));如果想外部的Calendar和SimpeDateFormat的内部的Calendar的timezone自动一致,那么就是设置系统timezone,以统一所有的timezone
即
System.setProperty("user.timezone", "GTM");