Stellen Sie sicher, dass AM / PM (Periode) nicht in NSDateFormat stringFromDate angezeigt wird

8

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%     
Damo 09.01.2013, 11:14
quelle

5 Antworten

0

Hier ist die Antwort, auf die ich mich festgelegt habe. Es ist ein wenig vereinfacht, aber es macht den Job.

%Vor%     
Damo 25.01.2013, 13:18
quelle
5

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"]];

    
Joey 11.04.2013 19:38
quelle
2

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.

    
Rok Jarc 09.01.2013 11:33
quelle
1

Sie müssen POSIX hier einen Beispielcode verwenden

%Vor%     
eddwinpaz 24.06.2014 12:45
quelle
0

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.

    
MaddTheSane 17.01.2013 21:32
quelle

Tags und Links