Home > CodeSnippets, iOS > NSDateFormatter

NSDateFormatter


NSDate *currentDate = [NSDate date]; //  aktuelles Datum und die Uhrzeit
NSString *strDate =  [currentDate description];
NSLog(strDate);
//  Ausgabe: 2008-12-31 14:00:39 +0100

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: 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 Landespezifisch 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 benutzt 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
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init]; [dateFormatter setDateStyle:NSDateFormatterMediumStyle]; [dateFormatter setTimeStyle:NSDateFormatterShortStyle]; NSLog(@"%@", [dateFormatter stringFromDate:[NSDate date]]); [dateFormatter release]; // Ausgabe: Dec 2, 2008 3:58 PM [dateFormatter setDateFormat:@"hh:mm:ss"]; // Ausgabe: 03:58:27

Möchtet Ihr eigene Formate Nutzen, solltet Ihr auf des Verhalten NSDateFormatterBehavior10_0 wechseln, welches übrigens 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 genutzt werden:
%ccc Kurzform des Wochentagnamens
%cccc Wochentagname
%MMM Kurzform des Monatnamens
%MMMM 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)
%a 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))
Categories: CodeSnippets, iOS
  1. No comments yet.
  1. No trackbacks yet.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s

%d bloggers like this: