2012-08-13 26 views
0

得到的字符串我有一個[self.post post_time]的NSDate與2012-08-02T08值:57:52.152713 + 00:00我無法從NSDate的

NSDateFormatter *formatter = [[NSDateFormatter alloc] init] ; 
[formatter setDateFormat:@"yyyy-mm-dd"]; 
NSLog([formatter stringFromDate:[self.post post_time]]); 

它不工作。問題是什麼?

+0

它看起來像self.post post_time返回零。 – 2012-08-13 07:52:56

+0

不;它返回2012-08-02T08:57:52.152713 + 00:00 – Burak 2012-08-13 07:56:59

+0

請檢查我的答案,謝謝! – holex 2012-08-13 08:29:09

回答

0

第一,時區確實讓你頭疼,因爲NSDateFormatter可以識別以下格式的時區,即+0000GMT+1000,但它不能識別與結腸癌的時區,+00:00,簡單地說,它沒有模式。所以,不知何故,你應該從時區部分刪除冒號。

,您必須使用以下模式輸入日期而不是yyyy-mm-dd,因爲此模式不包含您的輸入字符串。

NSString *_dateString = @"2012-08-02T08:57:52.152713+00:00"; 
NSString *_noColonInTimezone = [_dateString stringByReplacingCharactersInRange:NSMakeRange(_dateString.length-3, 1) withString:@""]; 
NSDateFormatter *_dateFormatter = [[NSDateFormatter alloc] init]; 
[_dateFormatter setDateFormat:@"yyyy-MM-dd'T'HH:mm:ss.SSZZZ"]; 
NSDate *_date = [_dateFormatter dateFromString:_noColonInTimezone]; 
NSLog(@"raw date : %@", _date); 

它運作良好,已在真機測試,我希望它可以幫助你得到與正確的日期NSDate對象,然後根據你願意,你可以格式化日期輸出。

+0

謝謝,它的工作原理。 – Burak 2012-08-13 22:20:24

1

你的代碼對我的作品

NSDateFormatter *df = [[NSDateFormatter alloc] init]; 
[df setDateFormat:@"yyyy-MM-dd'T'hh:mm:ss.SSSz"]; 
NSDate *myDate = [df dateFromString: @"2012-08-02T08:57:52.152713+00:00"]; // simulate your attribute 

NSDateFormatter *formatter = [[NSDateFormatter alloc] init] ; 
[formatter setDateFormat:@"yyyy-MM-dd"]; 
NSLog(@"%@", [formatter stringFromDate:myDate]); 
+1

它適用於[NSDate日期],但不適合我的價值。 2012-08-02T08:57:52.152713 + 00:00 – Burak 2012-08-13 07:56:36

+0

不,NSDate值。我正在用post_time = [attributes valueForKeyPath:@「post_time」]從JSON中讀取它; – Burak 2012-08-13 08:03:07

+0

你確定你不是NSDate嗎? – WhiteTiger 2012-08-13 08:07:17