2009-11-06 9 views

Odpowiedz

129

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]; 
+0

Edytowane dla iphone-ness. –

+2

nie zapomnij zwolnić formatera.

+0

Chyba, że ​​chcesz to zachować; zarządzanie pamięcią może lub nie może wejść w problem. –

15

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(&currentTime, &timeStruct); 
char buffer[20]; 
strftime(buffer, 20, "%d-%m-%Y %H:%M", &timeStruct); 
+0

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)'. –

+3

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. –

+0

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. –

7

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.

+0

Nie powinieneś utworzyć gdzieś daty? Nie przekazujesz go. – Randy

+0

Dobry złapie @Randy, właśnie zaktualizowano funkcję, aby przekazać obiekt 'date' jako parametr. – Zorayr

3

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.

Powiązane problemy