2012-09-22 71 views
0

可能重複:
Converting an ISO 8601 timestamp into an NSDate: How does one deal with the UTC time offset?IPhone得到當前系統的時區從RubyOnRails時間格式基於時間

我正在寫一個iPhone應用程序,它彙集了來自紅寶石時間on Rails的Web服務。 我從JSON響應中獲得的時間字符串具有以下格式。 「2012-12-01T01:01:00Z」 我想從中獲取基於系統時區的時間。 我該怎麼辦?

+0

這是由ISO 8601(http://en.wikipedia.org/wiki/ISO_8601)指定的格式。看看http://stackoverflow.com/q/5185230/684934或http://stackoverflow.com/q/7925038/684934。 – bdares

回答

1

如果您需要在服務器和應用程序上匹配您的時間,則可以設置日期格式化程序的時區,以便將JSON日期字符串轉換爲NSDate,以便在從Web服務獲取時使用GMT。所以,你的日期格式應該初始化是這樣的:

NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init]; 
[dateFormatter setDateFormat:@"YYYY-MM-dd'T'HH:mm:ss'Z'"]; 
[dateFormatter setTimeZone:[NSTimeZone timeZoneForSecondsFromGMT:0]]; 

然後您可以通過JSON的日期字符串,並使用它創建日期:

NSDate *dateFromServer = [dateFormatter dateFromString:[json valueForKey:@"created_at"]] 
// Do something with dateFromServer like save it to CoreData 

然後,後來,當你想顯示日期,只需創建另一個日期格式化程序,然後在當地時間用來顯示日期。 NSDate將默認爲系統時區,並顯示正確的時間。

NSDateFormatter *displayDateFormatter = [[NSDateFormatter alloc] init]; 
[dispalyDateFormatter setDateFormat:@"MMM dd, YYYY"]; // ex. Jul 21, 2012 

NSDate *dateFromCoreData = [managedObject valueForKey:@"CreatedAt"]; 
NSString *dateString = [displayDateFormatter stringFromDate:dateFromCoreData]; 
// Display your date string in a UILabel or Table View Cell, etc. 

此致敬禮。