2013-04-03 57 views
0

我有這樣的代碼,其在IOS 6此Rails的JSON提供的日期字符串轉換爲一個NSDate工作很大(2012-12-11T08:28:16-08:00):轉換的Rails日期字符串的NSDate

NSDateFormatter* formatter = [[NSDateFormatter alloc] init]; 
[formatter setDateFormat:@"yyyy-MM-dd'T'HH:mm:ssZZZZ"]; 
return [formatter dateFromString:string]; 

但它不適用於iOS 5.我找不到任何好的資源用於在5中轉換該日期。感謝您的任何幫助。

回答

0

您需要在年底解析字符串之前刪除從時區結腸。

這對我來說是比較容易,因爲我是解析+01:00,但你可以使用

[dateString componentsSeparatedByString:@"-"] 

獲得組件陣列,最後一個是時區,取出結腸

[timeZoneString stringByReplacingOccurrencesOfString:@":" withString:@""] 

然後將所有組件重新放在一起,並用「 - 」代替每個組件之間的「 - 」。

+0

完全合作。謝謝! – 2013-04-03 20:12:41

0

iOS 6.0使用UTS版本tr35-25進行格式化。對時區使用5'Z分析類似-08:00的內容。即:

[formatter setDateFormat:@"yyyy-MM-dd'T'HH:mm:ssZZZZZ"]; 

的iOS 5和5.1版本使用tr35-19,不爲-08指定什麼:00,雖然3「Z的用於類似-0800。

是否改變'Z的工作量?

你可以在這裏找到格式規範:

UTS #35-19

UTS #35-25

+0

不幸的是沒有,改變個Z的數量似乎並沒有工作。不過謝謝。 – 2013-04-03 19:33:25

+1

沒問題...它聽起來像一個黑客,但也許使用[NSString stringByReplacingOccurrencesOfString:withString:options:range:]用空字符串替換最後一個「:」,然後使用ZZZ作爲時區? – Pablo 2013-04-03 19:37:19

+0

@Pablo啊只是在發佈我的回答後纔看到這個,我認爲這是唯一的方法。 – 2013-04-03 19:58:25

0
NSDateFormatter *dateFormat = [[NSDateFormatter alloc] init]; 
[dateFormat setDateFormat:@"yyyy-MM-dd'T'HH:mm:ssZZZZZ"];  
NSString *clearedString = [railsDateString stringByReplacingOccurrencesOfString:@":" withString:@"" options:0 range:NSMakeRange(22, 1)]; 
NSDate *date = [dateFormat dateFromString:clearedString]; 

清潔詹姆斯的p型