2011-05-27 93 views
2

我正在创建格式化日期但始终返回null,任何想法的NSDateCategory?从NSString格式化日期

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; 
} 
+0

请你发表你.... – 2011-05-27 13:28:31

+0

测试的日期字符串请参阅问题的第二行的日期串 – TheLearner 2011-05-27 13:30:56

+0

哎呀 - ..发布一个答案呢。并认为我是对的。您试图用55个月解析日期。 – 2011-05-27 13:32:37

回答

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

我assuem应该dateFormatter setDateFormat:@"yyyy-MM-dd+hh:mm:ss"];毫米是分钟)

+0

这不起作用,它返回零 – TheLearner 2011-05-27 13:33:24

+0

是的,看看Rob的答案。 – 2011-05-27 13:34:59

2

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

请参阅UTS#35了解格式器字符串中使用的符号。

+0

尝试过这种方式不起作用:yyyy-MM-ddTHH:mm:ssZ – TheLearner 2011-05-27 13:57:39

+0

Z在UTS#35中不是合适的时区。它代表UTC(“祖鲁时间”)。您可以对其进行替换以将“Z”替换为“UTC”,也可以使用文字“Z”(如果它始终存在)。 YYYY-MM-dd'T'HH:MM:ss'Z”。请注意围绕文字的单引号和HH的使用,而不是hh。请务必阅读参考表格。 – 2011-05-27 14:56:33