【问题标题】:iOS Date format issue within App receipt应用收据中的 iOS 日期格式问题
【发布时间】:2014-06-06 12:41:39
【问题描述】:

验证收据时,我正在解析从 App Store 返回的 JSON。

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

有没有办法将它转换成可用的格式?

我知道在收据中还有一个字段 original_purchase_date_ms 是我怀疑自 1970 年以来的秒数,但是,这是一个私有字段(在任何文档中都没有提到),所以我不想依赖它的使用,才发现应用被拒绝,或者苹果后来删除了该字段!

提前致谢。

【问题讨论】:

  • 截断字符串并从中删除“Etc/GMT”。然后使用常规日期格式化程序并获取您的 NSDate
  • @SamBudda 好主意!谢谢!

标签: ios date nsdate receipt-validation


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

【讨论】:

  • 如果时区更改,这将失败。喜欢2016-09-29 23:34:34 America/Los_Angeles"。请改用"yyyy-MM-dd HH:mm:ss VV" 日期格式。
  • 也许你可以试试相反的方法,只保留前 19 个字符。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-09-20
  • 1970-01-01
相关资源
最近更新 更多