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 № 1Obiekt 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