NSString to NSDate = nil (с часовым поясом) - PullRequest
0 голосов
/ 10 февраля 2020

Попытка преобразовать строковое значение "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;
}

Ответы [ 2 ]

1 голос
/ 10 февраля 2020

Возможно, вы захотите взглянуть на ISO8601DateFormatter, который предназначен для того, что вы пытаетесь сделать:

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

0 голосов
/ 10 февраля 2020

В дополнение к ответу @Shai Mishali:

С учетом часового пояса ваша дата не соответствует RFC3339 или ISO8601.

Поскольку ISO8601 позволяет подставлять 'T' в середине для '' , вы не получите нулевой ответ. Однако, поскольку часовой пояс не соответствует спецификации c, он не будет проанализирован, и ответ не будет находиться в часовом поясе Лос-Анджелеса (PST, GMT-8). RFC3339:

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

...