Im Handbuch zum Unicode-Datumsformatmuster ( hier ) wird angegeben, dass ein "a 'zu dem Format wird die Periode (AM oder PM zum Beispiel), zB
%Vor%Ich möchte jedoch sicherstellen, dass die Periodeninformationen nicht angezeigt werden, aber ich kann dafür keine Formatzeichenfolge finden. Die Formatzeichenfolge, die ich verwende, lautet wie folgt:
%Vor%bekomme ich leider, wenn ich stringFromDate benutze:
2013-01-09T11: 11: 00 AM
Ich möchte nicht einfach AM oder PM aus der resultierenden Zeichenfolge streichen, da die Periodensyntax in verschiedenen Kalendern usw. unterschiedlich sein kann. Ich möchte nur die Periodendaten erscheinen lassen.
---- 8 & lt; ------
Betrachten Sie den folgenden Code
%Vor%Dieser Code erzeugt eine Zeichenkette in dem von mir gewünschten Format - ich kann sie jedoch nicht zur Speicherverwaltung verwenden. Die App, an der ich arbeite, wird von NSDateFormatter-Speicherlecks geplagt. Daher verwenden wir eine Singleton-Klasse, um der App eine Set-Nummer NSDateFormatters zu geben, die niemals freigegeben wird, und deshalb minimieren wir, wie viel Speicher geleakt wird. Unglücklicherweise fügen diese statischen NSDateFormatters AM / PM hinzu, auch wenn ich eine Datumsformat-Zeichenfolge anwende:
%Vor% Nach Datum Formatierer anders Ausgabe auf verschiedenen Geräten mit derselben iOS-Version , setze das lokale von NSDateFormatter
auf en_US_POSIX
, um das Problem zu beheben.
Zusätzlich zu Local können Sie Probleme mit der Einstellung der Zeitzone vermeiden:
[formatter setTimeZone: [NSTimeZone timeZoneWithAbbreviation: @ "UTC"]];
Es hängt tatsächlich von den Benutzereinstellungen ab.
Siehe Fixed Formats Teil des Data Formatting Guide. Beachte diesen Satz:
In iOS kann der Benutzer die standardmäßige AM / PM-Einstellung gegenüber der 24-Stunden-Zeit überschreiben Rahmen. Dies kann dazu führen, dass NSDateFormatter die Formatzeichenfolge neu schreibt Sie setzen.
Und am Ende des Absatzes:
Die Darstellung der Uhrzeit kann 13:00 Uhr sein. In iOS jedoch wenn die Benutzer hat die 24-Stunden-Zeit auf Aus geschaltet , die Uhrzeit kann 1:00 Uhr sein.
Eine Möglichkeit besteht darin, einen eigenen NSFormatter zu erstellen. Ich habe das in meinem Code gemacht, als ich den Formatierer in Xcode's Interface Builder nicht bekommen konnte, um das zu tun, was ich wollte. Zugegeben, ich habe nur nach Stunden, Minuten und Sekunden gesucht und nicht nach dem vollen Datum.
Wie für die Speicherlecks: Wenn Sie können, verwenden Sie ARC. Wenn dies nicht möglich ist, versuchen Sie mit dem Static Analyzer von Xcode, unkorrekte Retain-Zählungen aufzuspüren.
Tags und Links objective-c ios