NSString в NSDate = nil (с часовым поясом)
Попытка преобразовать строковое значение expires_date в объект NSDate.
- строка даты = "2019-08-18 15:12:09 Америка / Лос-Анджелес"
Какие-либо предложения?
-(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;
}
2 ответа
Вы можете изучить ISO8601DateFormatter, который адаптирован для того, что вы пытаетесь сделать:
https://developer.apple.com/documentation/foundation/iso8601dateformatter
В дополнение к ответу @Shai Mishali:
Учитывая часовой пояс, ваша дата не соответствует ни RFC3339, ни ISO8601.
Поскольку ISO8601 позволяет заменять букву "T" в середине на "", вы не получите нулевого ответа. Однако, поскольку часовой пояс не соответствует спецификации, он не будет проанализирован, и ответ не будет в часовом поясе Лос-Анджелеса (PST, GMT-8).
Вот ваша дата в юридическом ISO8601 / RFC3339: