Posts

Post marked as solved
14 Replies
12k Views
We're currently looking into moving our app to iOS 11 when we discovered a portion of our legacy code used to convert UTC date times to localized date time strings is returning differing values between iOS 10 and iOS 11. When running a fresh install of our app on simulators (after resetting content and settings) we see the following output:10.3.1:(lldb) po [NSTimeZone localTimeZone]Local Time Zone (America/Toronto (EDT) offset -14400 (Daylight))11.0:(lldb) po [NSTimeZone localTimeZone]Local Time Zone (America/Los_Angeles (PDT) offset -25200 (Daylight))I created a fresh project and have the same results when I run the following snippit highlighting the issue:- (void)logLocalizedDate { // Setup: Create a UTC date time NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init]; [dateFormatter setDateFormat:@"yyyy-MM-dd HH:mm:ss zzz"]; NSDate *utcDate = [dateFormatter dateFromString: @"2017-08-18 00:00:00 UTC"]; [NSTimeZone setDefaultTimeZone:[NSTimeZone timeZoneWithName:@"UTC"]]; // Now convert it to a local time zone string NSString *localizedDateString = [self computeLocalTimeZoneDayStringFromDate:utcDate]; NSLog(@"Computed Date String: %@", localizedDateString); } -(NSString *)computeLocalTimeZoneDayStringFromDate:(NSDate *)dateToCompute { // Create a localized date formatter NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init]; [dateFormatter setLocale:[[NSLocale alloc] initWithLocaleIdentifier:@"en"]]; [dateFormatter setDateFormat:@"yyyy-MM-dd"]; // This call differs between iOS10 and iOS 11 dateFormatter.timeZone = [NSTimeZone localTimeZone]; NSString *date = [dateFormatter stringFromDate:dateToCompute]; return date; }Anything wrong here? We've never had an issue in the past and similar code in our app has been ported from iOS 8 -> 9 -> 10 with no issues. In fact it hasn't changed since 2014.Thanks
Posted
by jateb.
Last updated
.