NSDateFormatter and Time Zone issue?

I have a string with time in GMT and i want to make it according to the system time zone but its not working properly –

NSLog(@"Time Str = %@",Time);

NSDateFormatter *dateFormat = [[NSDateFormatter alloc] init];
[dateFormat setDateFormat:@"dd-MM-yyyy hh:mm a"];

[NSTimeZone resetSystemTimeZone];

NSLog(@"system time zone = %@",[NSTimeZone systemTimeZone]);

[dateFormat setTimeZone:[NSTimeZone systemTimeZone]];

NSDate *date = [dateFormat dateFromString:Time];

[dateFormat setTimeZone:[NSTimeZone systemTimeZone]];
NSLog(@"date from string = %@",date);
NSLog(@"string from date = %@",[dateFormat stringFromDate:date]);

Output at console –

  • Determine if current local time is between two times (ignoring the date portion)
  • Getting date from off by a few hours
  • Convert UTC to local time in objective C
  • Can we change the device time using an application?
  • Swift make NSDate from string not working as expected
  • Date comparison or timezone not set properly
  • ////////////////////////////////////////////////////////////////////////////////////////////////

    Time Str = 09-12-2011 07:57 AM

    system time zone = Asia/Calcutta (IST) offset 19800

    date from string = 2011-12-09 02:27:00 +0000

    string from date = 09-12-2011 07:57 AM


    Calcutta is +5:30 from GMT, so the time in date should be 1:27 but its showing 02:27. Also when i take a string from this date its showing me the same sting that i used to make date, i want the string updated according system time zone.


    Solutions Collect From Internet About “NSDateFormatter and Time Zone issue?”

    If the date string is in GMT you can’t use your system Timezone to create the NSDate from the NSString.

    replace the first occurrence of [dateFormat setTimeZone:[NSTimeZone systemTimeZone]];

    with [dateFormat setTimeZone:[NSTimeZone timeZoneWithName:@"GMT"]];