0

试图将“expires_date”字符串值转换为 NSDate 对象。

  • 日期字符串 = "2019-08-18 15:12:09 America/Los_Angeles"

有什么建议么?

-(NSDate*)expires_date{
    NSMutableDictionary * dictionary = [_dictionary mutableCopy];
    NSString * date_string = [dictionary valueForKey:@"expires_date"];

    //date_string = "2019-08-18 15:12:09 America/Los_Angeles"

    NSDateFormatter *dateFormatter = [IAPSKReceipt formatter];
    NSDate *date = [dateFormatter dateFromString:date_string];
    return date;
}

+(NSDateFormatter*)formatter{
    NSDateFormatter * dateFormatter = [[NSDateFormatter alloc] init];
    dateFormatter = [NSLocale localeWithLocaleIdentifier:@"en_US"];
    dateFormatter = @"yyyy-MM-dd HH:mm:ss";
    dateFormatter = [NSTimeZone timeZoneForSecondsFromGMT:0];
    return dateFormatter;
}
4

2 回答 2

2

您可能想查看为您尝试做的事情量身定制的 ISO8601DateFormatter:

https://developer.apple.com/documentation/foundation/iso8601dateformatter

于 2020-02-10T14:46:25.030 回答
1

除了@Shai Mishali 的回答:

考虑到时区,您的日期似乎既不符合 RFC3339 也不符合 ISO8601。

ISO8601允许将中间的“T”替换为“”,这样您就不会得到 nil 响应。但是,由于时区不符合规范,因此不会对其进行解析,并且预期的响应不会位于所需的 LA 时区(PST、GMT-8)。

这是您在合法 ISO8601/RFC3339 中的日期:

“2019-08-18T15:12:09-0800”

于 2020-02-10T15:00:48.340 回答