NSDateFormatter: how to convert date string with 'GMT' to local NSDate?

前端 未结 2 1504
予麋鹿
予麋鹿 2020-12-16 06:20

I need to convert a date string retrieved from a server, to local NSDate, the string looks like:

\"Fri, 30 Nov 2012 00:35:18 GMT\"

But now

相关标签:
2条回答
  • 2020-12-16 06:39

    Just use NSDateFormatter with the formatting string eee, dd MMM yyyy HH:mm:ss zzz. The Zs at the end cause it to read the time zone from the string.

    So, given QA1480, sample code:

    NSLocale *usLocale = [[[NSLocale alloc] initWithLocaleIdentifier:@"en_US_POSIX"] autorelease];
    NSDateFormatter *formatter = [[[NSDateFormatter alloc] init] autorelease];
    [formatter setLocale:usLocale];
    [formatter setDateFormat:@"eee, dd MMM yyyy HH:mm:ss zzz"];
    _createdAt = [formatter dateFromString:dateString];
    
    0 讨论(0)
  • 2020-12-16 06:50

    Note that NSDate's always store the date, internally, in GMT. You then use a date formatter to create a string in your local time zone. In this case, you are starting with a string so need to use the date formatter to create the date in the first place, and then use it again to create a string in your local time zone (which it defaults to when the timezone is not specified).

    NSString *dateString           = @"Fri, 30 Nov 2012 00:35:18 GMT";
    
    NSDateFormatter *dateFormatter = [NSDateFormatter new];
    dateFormatter.dateFormat       = @"EEE, dd MM yyyy HH:mm:ss zzz";
    
    NSDate *date                   = [dateFormatter dateFromString:dateString];
    NSString *localDateString      = [dateFormatter stringFromDate:date];
    
    NSLog(@"%@", localDateString);
    // Results:  Thu, 29 11 2012 19:35:18 EST
    
    0 讨论(0)
提交回复
热议问题