NSDateFormatter and Time Zone issue?

33,669

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"]];

Share:
33,669
saadnib
Author by

saadnib

https://saadnib.wordpress.com/about-me/

Updated on July 05, 2022

Comments

  • saadnib
    saadnib almost 2 years

    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 -

    ////////////////////////////////////////////////////////////////////////////////////////////////

    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.

    Thanks

  • S.J
    S.J over 9 years
    If I want my app to work any where in any timezone then what should I do?
  • Aashish
    Aashish almost 7 years
    you need to use the standard GMT timeZone and convert it to the local timezone as per required.