Home Code-Schnipsel Datum und Uhrzeit NSDate in einen String umwandeln

iPhone Gewinnspiel

NSDate in einen String umwandeln PDF Drucken E-Mail
Share
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))

 

Ihren Kommentar hinzufügen

Ihr Name:
Ihre Webseite:
Betreff:
Kommentar:
  Bild, welches den Sicherheitscode enthält
Sicherheitscode:
LAST_UPDATED2