iPhone从Ruby On Rails时间格式获取当前基于系统时区的时间

时间:2012-09-22 01:59:43

标签: iphone ruby-on-rails-3.1 nsdateformatter nstimezone

  

可能重复:
  Converting an ISO 8601 timestamp into an NSDate: How does one deal with the UTC time offset?

我正在编写一个iPhone应用程序,它可以从Ruby on Rails Web服务中获取时间。 我从JSON响应获得的时间字符串具有以下格式。 “2012-12-01T01:01:00Z” 我想从此获得基于系统时区的时间。 我该怎么办?

1 个答案:

答案 0 :(得分:1)

如果您需要在服务器和应用程序上匹配时间,则可以设置日期格式化程序的时区,用于将JSON日期字符串转换为NSDate,以便在从Web服务获取GMT时使用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.

最好的问候。