Ich weiß, dass die NSDateformatter-Funktionssuite ein Segen für die Menschheit ist, aber gleichzeitig ist sie für mich sehr verwirrend. Ich hoffe du kannst mir helfen.
Irgendwo in meinem Code gibt es ein int, das einen Monat darstellt. Also: 1 wäre Januar, 2. Februar usw.
In meiner Benutzeroberfläche möchte ich diese Ganzzahl als richtigen Monatsnamen anzeigen. Darüber hinaus sollte es dem Gebietsschema des Geräts entsprechen.
Vielen Dank für Ihre Erkenntnisse
In der Zwischenzeit habe ich Folgendes getan:
int monthNumber = 11
NSString * dateString = [NSString stringWithFormat: @"%d", monthNumber];
NSDateFormatter* dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateFormat:@"MM"];
NSDate* myDate = [dateFormatter dateFromString:dateString];
[dateFormatter release];
NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
[formatter setDateFormat:@"MMMM"];
NSString *stringFromDate = [formatter stringFromDate:myDate];
[formatter release];
ist das der Weg, es zu tun? Es scheint ein bisschen wortreich.
ios
numbers
nsdateformatter
Sjakelien
quelle
quelle
Antworten:
Eine andere Option ist die Verwendung der monthSymbols-Methode:
Beachten Sie, dass Sie 1 von Ihrer 1..12 monthNumber subtrahieren müssen, da monthSymbols auf Null basiert.
quelle
standaloneMonthSymbols
muss benutzt werden.NSString *monthName = [[[NSDateFormatter alloc] init] monthSymbols][monthNumber-1];
[df shortMonthSymbols]
Sie diese Option, wenn Sie kurze Monatsnamen möchten (Jan, Feb ...).Swift 2.0
Swift 4.0
quelle
Sie können das dateFormat des NSDateFormatter ändern. So vereinfachen Sie Ihren Code:
Sie sollten das Gebietsschema auch festlegen, sobald Sie den Datumsformatierer gestartet haben.
Hoffe das hilft
quelle
Die beste Lösung hierfür ist,
standaloneMonthSymbols
Methode,quelle
Wie wäre es mit:
quelle
Beide Antworten von Anna Karenina und Carl funktionieren nicht so gut, da sie für einige Kulturen keinen nominativen Monatsnamen zurückgeben. Ich schlage vor, die vorgeschlagene Lösung von Pascal zu verwenden, die dieses Problem löst (durch Ersetzen
monthSymbols
durchstandaloneMonthSymbols
).quelle
In Swift 3.0
quelle
standaloneMonthSymbols
für korrekte Groß- und Kleinschreibung in einigen Sprachen zu verwendenSwift 4.X.
print((DateFormatter().monthSymbols[month-1].capitalized)) //month is int less than 12
Beispielsweise:
print((DateFormatter().monthSymbols[11-1].capitalized))
Ausgabe
November
quelle
NSDate to NSString -> As Dateformat Ex: 24.06.2015
NSDate to NSString -> As Dateformat Ex: 2015 24. Juni, 13:02 Uhr
quelle
Und mit ARC:
quelle
Sie sollten in der Lage sein, die Veröffentlichung und Neuzuweisung von dateFormatter loszuwerden und ein paar Zeilen auszuschneiden, aber das ist alles, was ich sehe.
quelle