private static Date offsetTimeZone(Date date, String fromTZ, String toTZ){
// Construct FROM and TO TimeZone instances
TimeZone fromTimeZone = TimeZone.getTimeZone(fromTZ);
TimeZone toTimeZone = TimeZone.getTimeZone(toTZ);
// Get a Calendar instance using the default time zone and locale.
Calendar calendar = Calendar.getInstance();
// Set the calendar's time with the given date
calendar.setTimeZone(fromTimeZone);
calendar.setTime(date);
System.out.println("Input: " + calendar.getTime() + " in " + fromTimeZone.getDisplayName());
calendar.set(calendar.DST_OFFSET, 0); // this line to off DST
// FROM TimeZone to UTC
calendar.add(Calendar.MILLISECOND, fromTimeZone.getRawOffset() * -1);
if (fromTimeZone.inDaylightTime(calendar.getTime())) {
calendar.add(Calendar.MILLISECOND, calendar.getTimeZone().getDSTSavings() * -1);
System.out.println("hrere");
}
// UTC to TO TimeZone
calendar.add(Calendar.MILLISECOND, toTimeZone.getRawOffset());
if (toTimeZone.inDaylightTime(calendar.getTime())) {
calendar.add(Calendar.MILLISECOND, toTimeZone.getDSTSavings());
System.out.println("doing");
}
return calendar.getTime();
}