时区时间 Time in a Specified Timezone

Leopard_04 某个时间点在所有的时区里都是同一个时间点(即Date object相等),但人为表示却各不相同(Format有不同)。

SimpleDateFormat sdf = new SimpleDateFormat("yyyy_MM_dd_HH_mm_ss_SSS", Locale.US);
sdf.setTimeZone(TimeZone.getTimeZone("GMT+8")); // 设为+8时区 - 中港台新时间
System.out.println(sdf.format(new Date())); // ‘2009_12_20_03_17_16_062’
sdf.setTimeZone(TimeZone.getTimeZone("America/New_York")); // 设为纽约所在时区
System.out.println(sdf.format(new Date())); // ‘2009_12_19_22_17_16_062’

注意到我们有两种方式指定时区,一是GMT时差指定,而是地区指定,所有支持地区可参见JRE_HOME/lib/zi目录。