自动续订订阅收据日期格式

Hyp*_*ole 16 iphone objective-c subscription nsdateformatter ios

我正在努力弄清楚以下日期的格式:

2011-05-24 19:02:32 Etc/GMT

此日期从Apple的收据验证服务返回,我需要将其转换为NSDate进行一些比较操作.真正的麻烦与时区有关.

这是我已经写过的一些代码:

        NSDictionary *receiptData = [info valueForKey:@"expires_date"];

        NSDateFormatter *f = [[NSDateFormatter alloc] init];

        [f setLocale:[NSLocale currentLocale]];
        [f setTimeZone:[NSTimeZone timeZoneForSecondsFromGMT:0]];
        [f setDateFormat:@"yyyy-MM-dd HH:mm:ss vvvv"];

        NSLog(@"%@", [f stringFromDate:[NSDate date]]);

        NSDate *subPurchaseDate = [f dateFromString:[receiptData valueForKey:@"original_purchase_date"]];

        [f release];
Run Code Online (Sandbox Code Playgroud)

我已经尝试过'v'和'Z'的所有组合,我能想到的.任何见解?

Yar*_*sim 16

通过查看日期格式文档,我得到了正确的格式,对我来说效果很好:

        NSDateFormatter * formatter = [NSDateFormatter new];
        formatter.dateFormat = @"yyyy-MM-dd HH:mm:ss VV";

        NSDate * purchaseDate = [formatter dateFromString:latestTransaction[@"original_purchase_date"]];
        NSDate * expirationDate = [formatter dateFromString:latestTransaction[@"expires_date"]];
Run Code Online (Sandbox Code Playgroud)

无需在格式化程序上设置时区,因为它嵌入在字符串中.
操作日期字符串来解析它不是一个好主意.

资料来源:http://www.unicode.org/reports/tr35/tr35-31/tr35-dates.html#Date_Format_Patterns