之前公司有要求做时区转换,研究了老半天,也许是年纪大了,太愚钝,总算整清楚了,记录一下
----------------------------------------------------------------------------------------------------------------------------------------------------------
1. cal.getTimeInMillis()-System.currentTimeMillis() = 0;
----------------------------------------------------------------------------------------------------------------------------------------------------------
1. cal.getTimeInMillis()-System.currentTimeMillis() = 0;
这两个值是一样的,表示距离UTC+0的绝对毫秒值。(即距离1970.1.1 00:00:000的毫秒值)
2.设置TimeZone的3种方式以及注意事项
TimeZone是进行时区设置的类,这里介绍两个比较重要的方法
a.TimeZone.setDefault(TimeZone.getTimeZone("Asia/Tokyo"));
b.TimeZone.getTimeZone("Asia/Tokyo");
方法a可以设置TimeZone的默认时区,当使用SimpleDateFormat,Calendar,Date在默认的情况下,它们所读取时间的时区都是根据TimeZone的默认时区来的。
方法b返回指定时区的TimeZone对象。
当默认时区是上海时,
Calendar cal = Calendar.getInstance();
//cal对应的时区是上海
cal.setTimeZone(TimeZone.getTimeZone("Asia/Tokyo")); //这时cal对应的时区是东京
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); //sdf对应时区为上海
*sdf.setCalendar(cal); // sdf通过cal也可以设置时区,这时的时区跟cal一致。
*sdf.setTimeZone(TimeZone.getTimeZone("Asia/Tokyo")); //sdf设置时区为东京
对于Date类总是参照TimeZone的默认时区来显示当前的时间。
CodeSection-----------------------------------------------------------------------------------------------------------------------
设置系统默认的时区为"
Europe/Paris
"
<span style="white-space:pre"> </span>public static void main(String[] args) {
<span style="white-space:pre"> </span> // TODO Auto-generated method stub <span style="white-space:pre"> </span> <span style="white-space:pre"> </span>
<span style="white-space:pre"> </span>TimeZone.setDefault(TimeZone.getTimeZone("Europe/Paris"));
<span style="white-space:pre"> </span>
<span style="white-space:pre"> </span> SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); <span style="white-space:pre"> </span>
<span style="white-space:pre"> </span> sdf.setTimeZone(TimeZone.getTimeZone("Asia/Tokyo")); <span style="white-space:pre"> </span>
<span style="white-space:pre"> </span>
<span style="white-space:pre"> </span> Calendar cal = Calendar.getInstance();
<span style="white-space:pre"> </span> cal.setTimeZone(TimeZone.getTimeZone("Asia/Tokyo"));
<span style="white-space:pre"> </span> <span style="white-space:pre"> </span> <span style="white-space:pre"> </span> <span style="white-space:pre"> </span> <span style="white-space:pre"> </span>
<span style="white-space:pre"> </span> System.out.println("The Default TimeZone is "+TimeZone.getDefault().getID());
<span style="white-space:pre"> </span> System.out.println("Date Under Default TimeZone is"+"---"+new Date());
<span style="white-space:pre"> </span> System.out.println("("+sdf.getTimeZone().getID()+")"+"Date from SimpleDateFormat be "+sdf.format(new Date()));
<span style="white-space:pre"> </span> System.out.println("The TimeZone of Calender be "+cal.getTimeZone().getID());
<span style="white-space:pre"> </span>}
实际上也没那么复杂,之前想的太。。。。总之目前的理解是最贴切的吧