NSDate in einen String umwandeln |
|
|
|
Geschrieben von: Philipp
|
MONDAY, 06 OCTOBER 2008 13:10 |
Oft möchte man sicherlich ein Object vom Typ NSDate in einen NSString konvertieren.
Der einfachste Weg wär einfach die Description eines NSDate-Objektes als string zu nutzen:
NSDate *currentDate = [NSDate date]; // aktuelles Datum und die Uhrzeit
NSString *strDate = [currentDate description];
NSLog(strDate);
// Ausgabe wäre : "2008-12-31 14:00:39 +0100"
Es handelt sich dbei jedoch um eine englische Darstellungsvariante. Mit folgenden Code kann man die Darstellungform verändern und z.B. im deutschen Format darstellen:
NSDate *currentDate = [NSDate date]; // aktuelles Datum und die Uhrzeit
NSString *strDate = [[currentDate dateWithCalendarFormat:@"%d.%m.%Y %H:%M Uhr" timeZone:nil] description];
NSLog(strDate);
// Ausgabe wäre : "31.12.2008 14:00 Uhr"
Möchte man jedoch sein Datum immer in der aktuell eingestellten Systemsprache formatiert haben, nutzt man am besten den NSDateFormatter. Der große Vorteil ist, das der NSDateFormatter die Konvertierung Landespsezifisch vornimmt, z.B.:
29.10.2008 14:49 für Deutschland und
10/29/2008 02:49pm für den englisch sprachigen Raum.
Dabei wird die jeweilige Landesprache durch die Einstellungen im jeweiligen iPhone/iPod Touch festgelegt.
Wie im folgenden gezeigt, wird der NSDateFormatter genutzt:
// aktuelles Datum / Uhrzeit
NSDate* today = [NSDate date];
// Verhalten für den NSDateFormatter festlegen
[NSDateFormatter setDefaultFormatterBehavior:NSDateFormatterBehavior10_4];
// NSDateFormatter Objekt erzeugen
NSDateFormatter *dateFormatter = [[[NSDateFormatter alloc] init] autorelease];
// Style für das Datum festlegen
[dateFormatter setDateStyle:NSDateFormatterShortStyle]; // z.B. 08.10.2008
// Style für die Zeit festlegen
[dateFormatter setTimeStyle:NSDateFormatterNoStyle]; // keine Zeitangabe
// konvertiert das NSDate vom DatePicker in einen String
NSString *result = [dateFormatter stringFromDate:today];
Folgende Styles können benutz werden:
Style |
Datum |
Zeit |
NSDateFormatterNoStyle |
(es wird nichts dargestellt) |
(es wird nichts dargestellt) |
NSDateFormatterShortStyle |
11/23/37 |
3:30:32pm |
NSDateFormatterMediumStyle |
Nov 23, 1937 |
|
NSDateFormatterLongStyle |
November 23, 1937 |
3:30:32pm |
NSDateFormatterFullStyle |
Tuesday, April 12, 1952 AD |
3:30:42pm PST |
Möchtet Ihr eigene Formate Nutzen, solltet Ihr auf des Verhalten NSDateFormatterBehavior10_0 wechseln, welches übriegens auch der Standardeinstellung entspricht, und dann wie folgt den DateFormater nutzen:
NSDateFormatter *dateFormatter = [[[NSDateFormatter alloc]
initWithDateFormat:@"%1m/%1d/%Y" allowNaturalLanguage:NO] autorelease];
NSString *formattedDateString = [dateFormatter stringFromDate:date];
// Ergebnis wäre z.B. 12/31/2008
Folgende Formatanweisungen können dabei genutz werden:
%a |
Kurzform des Wochentagnamens |
%A |
Wochentagname |
%b |
Kurzform des Monatnamens |
%B |
Monatsname |
%d |
Tag des Monats als Zahl (01-31) |
%e |
das Gleiche wie %d aber ohne führende 0 |
%F |
Millisekunden als Zahl (000-999) |
%H |
Stunde (00-23) |
%I |
Stunde (01-12) |
%j |
Tag des Jahres als Zahl (001-366) |
%m |
Monat als Zahl (01-12) |
%M |
Minute (00-59) |
%p |
AM/PM Kennzeichnung |
%S |
Sekunde (00-59) |
%w |
Wochentag als Zahl (0-6), Sonntag ist 0 |
%y |
Jahr ohne Jahrtausend (00-99) |
%Y |
Jahr mit Jahrtausend (z.B. 1990) |
%Z |
Zeitzonenname |
%z |
Zeitzone (GMT (HHMM)) |
|
LAST_UPDATED2 |