格式化NSString中的日期

时间:2011-05-27 13:24:04

标签: objective-c

我正在创建一个格式化日期的NSDateCategory,但它总是返回null,有什么想法吗?

  

2011-06-05T16:55:00Z

+ (NSDate *)dateFromString:(NSString *)dateString
{
    NSLog(@"date string %@", dateString);

    NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
    [dateFormatter setDateFormat:@"yyyy-MM-dd+hh:MM:ss"];
    NSDate *result = [dateFormatter dateFromString:dateString];
    [dateFormatter release];
    return result;
}

3 个答案:

答案 0 :(得分:2)

您的字符串与格式不符。您在日期字符串中使用“T”来分隔时间并以时区指示符结束。您的格式使用“+”分隔时间并且没有时区指示符。您还使用“MM”分钟,这应该是“mm”。

有关格式化程序字符串中使用的符号,请参阅UTS#35

答案 1 :(得分:2)

多么伟大的使命!终于想通了。在您甚至担心格式化之前,需要设置时区!

NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
    [dateFormatter setDateFormat:@"yyyy-MM-dd'T'HH:mm:ss'Z'"];
    [dateFormatter setTimeZone:[NSTimeZone timeZoneForSecondsFromGMT:0]];
    NSDate *result = [dateFormatter dateFromString:dateString];
    [dateFormatter release];

答案 2 :(得分:1)

我认为它应该是dateFormatter setDateFormat:@"yyyy-MM-dd+hh:mm:ss"]; mm 是分钟)