Я пытаюсь преобразовать следующую строку «2016-05-15T14: 40: 43.447» в NSDate
, но ее не NSDateFormatter
всегда возвращает nil
.Как получить NSTimeInterval из NSString?
Это то, что я делаю сейчас.
- (NSTimeInterval) timeIntervalFromDateString:(NSString *)stringDate {
if(!stringDate || ![stringDate length]) {
return 0.0f;
}
static NSDateFormatter *df = nil;
static dispatch_once_t onceToken;
dispatch_once(&onceToken, ^{
df = [NSDateFormatter new];
[df setDateFormat:@"yyyy-MM-dd'T'hh:mm:ss.SSS"];
});
NSDate *date = [df dateFromString:stringDate];
// date is always returns nil.
return [date timeIntervalSince1970];
}
Я попытался установить следующие форматы:
yyyy-MM-dd'T'hh:mm:ss.SSS
yyyy-MM-dd'T'hh:mm:ssz
yyyy-MM-dd'T'hh:mm:ss Z
yyyy-MM-dd'T'hh:mm:ss.SSS Z
yyyy-MM-dd'T'hh:mm:ss.SSS z
Но ни один из них не работал.
Я также проверил What format string do I use for milliseconds in date strings on iPhone?, но не поможет.
Любые удачи?
Почему вы хотите dispatch_once блок там? Нужно – Arun
Да, я использовал, чтобы убедиться, что 'NSDateFormatter' будет создаваться только один раз. – Hemang
В любом случае, если вы создаете экземпляр dateformatter в методе, его объем будет только в методе. Поэтому, даже если вы создаете каждый раз, он будет очищен из памяти при выходе из метода. Я думаю, так как вы дали dispatch_once, экземпляр dateformatter не получает выделение и ничтожно каждый раз – Arun