Chcę bieżący czas w następującym formacie w ciągu znaków.Uzyskiwanie bieżącego czasu w ciągu w formacie niestandardowym w celu c
dd-mm-rrrr GG: MM
Jak?
Chcę bieżący czas w następującym formacie w ciągu znaków.Uzyskiwanie bieżącego czasu w ciągu w formacie niestandardowym w celu c
dd-mm-rrrr GG: MM
Jak?
Chcesz date formatter. Oto przykład:
NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
[formatter setDateFormat:@"dd-MM-yyyy HH:mm"];
NSDate *currentDate = [NSDate date];
NSString *dateString = [formatter stringFromDate:currentDate];
Albo użyć NSDateFormatter
jak Carl powiedział, lub po prostu użyć starego dobrego strftime
, który jest również całkowicie poprawny Objective-C:
#import <time.h>
time_t currentTime = time(NULL);
struct tm timeStruct;
localtime_r(¤tTime, &timeStruct);
char buffer[20];
strftime(buffer, 20, "%d-%m-%Y %H:%M", &timeStruct);
Zauważ, że nie możesz zrobić zbyt wiele z ciągiem C w Celu C. To może być wygodniejsze przy rejestrowaniu czegoś na konsoli. Możesz po prostu wymówić 'NSLog (@"% s ", bufor)'. –
Wszystko, co możesz zrobić z łańcuchem C w C, możesz zrobić w Objective-C. Co znaczy, prawie wszystko. Powinieneś używać zarówno ciągów C, jak i NSStrings i wybierać odpowiednie dla bieżącego przypadku użycia. Osobiście pójdę z rozwiązaniem Carla, ale ważne jest, aby mieć świadomość, że nie jest to jedyny sposób. –
Powiedziałbym, że powodem, dla którego nie należy używać strftime (mimo że generuje ciąg znaków C, który następnie trzeba przekonwertować) jest to, że traci się również znacznie większą elastyczność opcji formatowania daty NSDateFormatter, w tym bardziej zmienną długość wyników liczbowych i wkrótce. –
Oto proste rozwiązanie:
- (NSString *)stringWithDate:(NSDate *)date
{
return [NSDateFormatter localizedStringFromDate:date
dateStyle:NSDateFormatterMediumStyle
timeStyle:NSDateFormatterNoStyle];
}
Zmień dateStyle
i timeStyle
, aby spełnić wymagania dotyczące formatowania.
Może to będzie bardziej czytelny:
NSDateFormatter *date = [[NSDateFormatter alloc] init];
[date setDateFormat:@"HH:mm"];
NSString *dateString = [date stringFromDate:[NSDate date]];
[self.time setText:dateString];
Przede wszystkim tworzymy NSDateFormatter wbudowaną w obj-c z nazwą daty, to stosuje się go przez [[NSDateFormatter alloc] init];. Następnie mówimy procesorowi kodu, że chcemy, aby nasza data miała HOUR/MINUTE/SECOND. Wreszcie powinniśmy ustawić naszą datę jako ciąg do pracy z alertem lub ustawioną wartością etykiety, aby to zrobić, powinniśmy utworzyć ciąg z metodą NSString, a następnie używamy tego: [date stringFromDate: [NSDate date]]
Baw się z tym.
Edytowane dla iphone-ness. –
Chyba, że chcesz to zachować; zarządzanie pamięcią może lub nie może wejść w problem. –