timezone – How to get UTC offset in seconds in android-ThrowExceptions

Exception or error:

I’m trying to get the UTC offset in seconds in android. Since the emulator keeps returning 0, I can’t tell if I’m doing this correctly or not.

    Calendar c=Calendar.getInstance();
        TimeZone tz=c.getTimeZone();
        int offsetFromUtc=tz.getOffset(0)/1000;

When I put 0 in the tz.getOffset it means I just want the number of seconds from gmt.
Let me know if what Im doing is correct. Thanks

How to solve:

Time Zone offsets can change during the year, perhaps the most common reason is Daylight Savings Time. Instead of passing 0 to TimeZone.getOffset() uses the current time to get the current offset, create a new Date and get its Time value:

TimeZone tz = TimeZone.getDefault();
Date now = new Date();
int offsetFromUtc = tz.getOffset(now.getTime()) / 1000;

The emulator defaults to UTC, try checking the available timezones to test. Also you can pass a timezone switch to set the timezone, check the documentation for -timezone.


The default timezone of the emulator is GMT, meaning you will always get an offset of 0.
Your code looks fine (I didn’t try it).
Try changing the timezone of your emulator to something else and check your code.
Take a look in this open post: Link

Leave a Reply

Your email address will not be published. Required fields are marked *