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:

"2019-08-18T15:12:09-0800"

Другие вопросы по тегам