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
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
精彩评论