2011-05-27 96 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