В Objective-C как получить NSDate с миллисекундами? dateFromString: метод игнорирует миллисекунды - PullRequest
0 голосов
/ 25 апреля 2018

Я использовал следующий код:

NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
dateFormatter.timeZone = [NSTimeZone localTimeZone];
dateFormatter.locale = [NSLocale localeWithLocaleIdentifier:@"en_US_POSIX"];
dateFormatter.dateFormat = @"yyyy-MM-dd'T'HH:mm:ss.SSS'Z'";
NSString *str = [dateFormatter stringFromDate:[NSDate date]];
dateFormatter.dateFormat = @"yyyy-MM-dd'T'HH:mm:ss.SSS'Z'";
NSDate *dateToday =  [dateFormatter dateFromString:str];

Здесь значение для str является правильным с .milliseconds, но когда я пытаюсь преобразовать эту же строку с тем же используемым datFormatter в NSDate, она возвращает NSdate без миллисекунд.

1 Ответ

0 голосов
/ 25 апреля 2018

Используйте эти функции и попробуйте зарегистрировать даты, чтобы получить точные результаты: -

-(NSString *)stringFromDate:(NSDate *)date{
    NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
    dateFormatter.timeZone = [NSTimeZone localTimeZone];
    dateFormatter.locale = [NSLocale localeWithLocaleIdentifier:@"en_US_POSIX"];
    dateFormatter.dateFormat = @"yyyy-MM-dd'T'HH:mm:ss.SSS'Z'";
    NSString *str = [dateFormatter stringFromDate:[NSDate date]];
    NSLog(@"Date : %@",str);
    return str;
}

-(NSDate *)dateFromString:(NSString *)dateString{
    NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
    dateFormatter.timeZone = [NSTimeZone localTimeZone];
    dateFormatter.locale = [NSLocale localeWithLocaleIdentifier:@"en_US_POSIX"];
    dateFormatter.dateFormat = @"yyyy-MM-dd'T'HH:mm:ss.SSS'Z'";
    NSDate *date=[dateFormatter dateFromString:dateString];
    NSLog(@"Date : %@",[dateFormatter stringFromDate:date]);
    return date;
}
...