这是在时区之间转换纪元的示例代码。
public static long convertTimeZone(long lngDate, String fromTimeZone,
String toTimeZone) {
Calendar fromTime = Calendar.getInstance();
fromTime.setTimeZone(TimeZone.getTimeZone(fromTimeZone));
fromTime.setTimeInMillis(lngDate);
Calendar toTime = new GregorianCalendar(
TimeZone.getTimeZone(toTimeZone));
toTime.set(Calendar.DATE, fromTime.get(Calendar.DATE));
toTime.set(Calendar.MONTH, fromTime.get(Calendar.MONTH));
toTime.set(Calendar.YEAR, fromTime.get(Calendar.YEAR));
toTime.set(Calendar.HOUR_OF_DAY, fromTime.get(Calendar.HOUR_OF_DAY));
toTime.set(Calendar.MINUTE, fromTime.get(Calendar.MINUTE));
toTime.set(Calendar.SECOND, fromTime.get(Calendar.SECOND));
toTime.set(Calendar.MILLISECOND, fromTime.get(Calendar.MILLISECOND));
LOG.debug("Converted " + fromTime.getTimeInMillis() + " to "
+ toTime.getTimeInMillis());
SimpleDateFormat sdf = new SimpleDateFormat(
"dd-MMM-yyyy HH:mm:ss.SSS z");
sdf.setTimeZone(TimeZone.getTimeZone(fromTimeZone));
SimpleDateFormat sdf1 = new SimpleDateFormat(
"dd-MMM-yyyy HH:mm:ss.SSS z");
sdf1.setTimeZone(TimeZone.getTimeZone(toTimeZone));
LOG.debug("Converted " + sdf.format(fromTime.getTime()) + " to " + sdf1.format(toTime.getTime()));
return toTime.getTimeInMillis();
}
输出:
System.out.println(convertTimeZone(new Date().getTime(),"America/New_York","Asia/Singapore"));
Converted 1384514879944 to 1384468079944
Converted 15-Nov-2013 06:27:59.944 EST to 15-Nov-2013 06:27:59.944 SGT