2014-06-06 17 views
1

我正在分析验证收据时从App Store返回的JSON。iOS应用程序收据中的日期格式问题

其中一个公共字段是original_purchase_date。但是,此处返回的日期格式为“2014-05-30 14:05:51 Etc/GMT”。问题是,当我试图比较这个时,后缀(Etc/GMT)似乎是导致问题。我试图理解如何管理这个,因为这个后缀可以是任何时区(比如America/Los_Angeles或其他)。

有没有办法将其转换为可用格式?

我知道在收据中还有一个字段original_purchase_date_ms,这是自1970年以来的秒数我怀疑,但是,这是一个私人字段(不在任何文档中调出),所以我不想依赖它的使用,只能找到被拒绝的应用程序,否则苹果后来将其删除!

在此先感谢。

+0

截断字符串,并删除 “等/ GMT” 出来的。然后使用常规的日期格式化程序,并得到您的NSDate –

+0

@SamBudda好主意!谢谢! – MrNeilM

回答

1

示例代码:

NSString *oldDateStr = [NSString stringWithFormat: @"2014-05-30 14:05:51 Etc/GMT"]; 
NSString *newDateStr = [oldDateStr stringByReplacingOccurrencesOfString:@"Etc/GMT" withString:@""]; 

NSDateFormatter *dateFormat = [[NSDateFormatter alloc] init]; 
    [dateFormat setDateFormat:@"yyyy-MM-dd HH:mm:ss"]; 
NSDate *date1 = [dateFormat dateFromString:newDateStr]; 
+0

太棒了!非常感谢。 – MrNeilM

+1

如果时区改变,这将失败。像'2016-09-29 23:34:34 America/Los_Angeles“',用'”yyyy-MM-dd HH:mm:ss VV“'日期格式代替。 – TheTiger