/ / Objective-C – NSDateFormatter dateFromString ignorowanie czasu – cel-c, kakao, nsdateformatter

Objective-C - NSDateFormatter dateFromString ignoruj ​​czas - cel-c, kakao, nsdateformatter

Jeśli nie interesuje mnie godzina, czy mogę ją zignorować? Czyli mam ciąg daty, który wygląda tak @"2012-12-19T14:00:00" ale interesuje mnie tylko data (2012-12-19), ale jeśli ustawię NSDateFormatter lubić [dateFormatter setDateFormat:@"yyyy-MM-dd"]; to zwróci mi zero NSDate.

Odpowiedzi:

3 dla odpowiedzi № 1

Obiekt NSDate zawsze będzie zawierał również składnik czasu, ponieważ reprezentuje punkt w czasie — z tej perspektywy można argumentować, że nazwa NSDate jest myląca.

Powinieneś utworzyć program do formatowania daty do tworzenia dat z ciągu, ustawić godzinę na początek dnia i użyć drugiego programu do formatowania daty, aby wyprowadzić datę bez składnika czasu.

NSString *dateString = @"2012-12-19T14:00:00";

NSDateFormatter *inputFormatter = [[NSDateFormatter alloc] init];
[inputFormatter setDateFormat:@"yyyy-MM-dd"T"HH:mm:ss"];

NSDateFormatter *outputFormatter = [[NSDateFormatter alloc] init];
[outputFormatter setDateStyle:NSDateFormatterShortStyle];
[outputFormatter setTimeStyle:NSDateFormatterNoStyle];

NSDate *date = [inputFormatter dateFromString:dateString];

//this will set date"s time components to 00:00
[[NSCalendar currentCalendar] rangeOfUnit:NSDayCalendarUnit
startDate:&date
interval:NULL
forDate:date];

NSString *outputString = [outputFormatter stringFromDate:date];

NSLog(@"%@", outputString);

prowadzi do

19.12.12

podczas gdy format — wybrany przez stylizację — będzie zależny od ustawień regionalnych Twojego środowiska environment


-1 dla odpowiedzi № 2

wszystkie ciąg daty zwraca 10 znaków dla daty, mam na myśli to, że dzisiejsza data będzie 2012-11-19

możesz łatwo podciągać datę i używać jej tak, jak chcesz:

Przykład:

    NSString* newDate = @"";
newDate = [[NSDate date]substringToIndex:10];

wyjście będzie : 2012-11-19