【问题标题】:IPhone get current system time zone based time from RubyOnRails time format [duplicate]iPhone从RubyOnRails时间格式获取基于当前系统时区的时间[重复]
【发布时间】:2012-09-22 01:59:42
【问题描述】:

可能重复:
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” 我想从中获取基于系统时区的时间。 我该怎么办?

【问题讨论】:

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


【解决方案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.

最好的问候。

【讨论】:

    猜你喜欢
    • 2016-12-04
    • 2011-07-02
    • 1970-01-01
    • 2016-07-30
    • 2019-10-01
    • 2016-04-23
    • 1970-01-01
    相关资源
    最近更新 更多