I am using browser offset time to convert a given time to local time. Here is the code I am using for converting time from atlantic timezone(-4:00) to IST.
int hours=23;
int mins =30;
Calendar date=Calendar.getInstance();
date.set(Calendar.HOUR_OF_DAY, hours);
date.set(Calendar.MINUTE, mins);
browserOffsetTime=-browserOffsetTime;
TimeZone defaultTZ=TimeZone.getTimeZone("Atlantic/Bermuda");
int serverTimeOffset=defaultTZ.getRawOffset()+defaultTZ.getDSTSavings();
Date GMTDate= new Date(date.getTimeInMillis() - serverTimeOffset);
Date userBrowserTime = new Date(GMTDate.getTime() + browserOffsetTime);
Calendar cal1=Calendar.getInstance();
cal1.setTime(userBrowserTime);
This code returns exact result for EST which is 10:00 AM where as it returns 8:00 AM which should be 9:00 AM.
https://stackoverflow.com/a/21349556/3739916 this code returns exact results for both the time zones. But I need to work this out using browser offset time.