1. 如果已经知道某个地点的时区,年,月,日,时,分,秒,希望得到转换后的本系统时间,可以采用如下的方法:
方法:假设时区是GMT+08:00,,年是2009年,月是11月,日是7日,时是10时,分是50分,秒是30。
public class Time {
public static void main(String[] args) {
TimeZone tz = TimeZone.getTimeZone("GMT+08:00"); // 获得时区
Calendar cal = Calendar.getInstance();
cal.setTimeZone(tz); // 设置时区
cal.set(Calendar.YEAR, 2009); // 设置年
cal.set(Calendar.MONTH, Calendar.NOVEMBER); // 设置月
cal.set(Calendar.DAY_OF_MONTH, 7); // 设置日
cal.set(Calendar.HOUR_OF_DAY, 10); // 设置时
cal.set(Calendar.MINUTE, 50); // 设置分
cal.set(Calendar.SECOND, 30); // 设置秒
Date date = cal.getTime(); // 获得转成本地系统时区的时间
System.out.println(date); // 输出该时间
}
}
输出结果就是转换后的本地系统时区的时间,如果你现在的操作系统的时区是北京(GMT+08:00),则输出结果是
Sat Nov 07 10:50:30 CST 2009。
如果你把操作系统的时区改成曼谷(GMT+07:00), 则输出结果是Sat Nov 07 09:50:30 ICT 2009。
如果你把操作系统的时区改成夏威夷(GMT-10:00),则输出结果是Fri Nov 06 16:50:30 HST 2009。
注意你要知道你要转换时间的时区。
2. 如果已经有了一个Date的对象,想要获得该对象一段时间后的Date对象,可以使用如下的方法。
假设想要获得18个小时后的时间。
public class Time {
public static void main(String[] args) {
Date date = new Date();
System.out.println("原来的时间:");
System.out.println(date);
long milliseconds = date.getTime();
milliseconds = milliseconds + 18 * 60 * 60 * 1000; // 18小时是18*60*60*1000毫秒
date.setTime(milliseconds);
System.out.println("18个小时后的时间:");
System.out.println(date);
}
}
如果直接在时间的数字上去做加减,在月份处理上会出现点困难,比如有的月份是30天,有的是31天,闰年的二月是29等。
而用上面的方法,可以将这些操作让Date的方法自动去处理。