0

Possible Duplicate:
Converting an ISO 8601 timestamp into an NSDate: How does one deal with the UTC time offset?

I am writing an iPhone app, which brings time from Ruby on Rails web service. The time string i get from JSON response has following format. "2012-12-01T01:01:00Z" I want to get system time zone based time from this. How can I do?

4

1 回答 1

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.

此致。

于 2012-09-22T05:31:06.430 回答