So lokalisieren Sie einen "Timer" auf dem iPhone

8

Ich muss einen Timer im "hh: mm: ss" -Format auf dem iPhone anzeigen, möchte ihn jedoch lokalisieren. In Finnland wird beispielsweise ein Punkt anstelle eines Doppelpunkts zwischen den Zeitkomponenten (hh.mm.ss) verwendet. Apples NSDateFormatter würde den Trick machen, wenn ich mit einer "Zeit" beschäftigt wäre, aber ich muss Stunden viel mehr als 24 anzeigen.

Ich konnte nicht einen NSDate / NSDateFormatter arbeiten, weil, wenn Sie einen mit Sekunden machen ...

%Vor%

... alle 86.400 Sekunden (ein Tag) NSDate erhöht automatisch den Tag und Stunden, Minuten und Sekunden gehen auf Null zurück. Ich muss es mit einer beliebigen Anzahl von Sekunden arbeiten lassen, ohne es zu überrollen. Zum Beispiel möchte ich mit 86,401 Sekunden 24:00:01 (oder 24,00.01 in Finnland) anzeigen.

Mein Code verwaltet die gesamten Sekunden in Ordnung. Das einzige Problem, das ich habe, ist das Display. Ein einfaches ...

%Vor%

... würde funktionieren, wenn ich einen Weg finden könnte, um zu einem lokalisierten "sepString" zu kommen (dem Zeitkomponententrenner). NSLocale scheint das nicht zu haben.

Gedanken?

    
Swany 05.11.2010, 20:04
quelle

5 Antworten

3

Hier ist ein zugegebenermaßen hackischer Weg, um den Zeitkomponenten-Separator für jedes Gebietsschema zu erhalten. Es sollte auf iOS 3.2 und höher funktionieren. Ich weiß, dass der Code prägnanter sein kann, aber ich habe mein Flag "Maximum-Ausführlichkeit" aktiviert, um es so gut wie möglich lesbar zu machen.

%Vor%     
Swany 09.11.2010, 20:52
quelle
2

Hier finden Sie Informationen zu diesem Thema für andere, die möglicherweise herausfinden möchten, welchen Charakter verschiedene Bereiche der Welt verwenden, um Zeitkomponenten zu trennen. Ich habe alle "Region Format" -Einstellungen auf meinem iPhone - iOS Version 4.1 (8B117) durchgegangen und ich habe festgestellt, dass alle bis auf sieben Regionen einen Doppelpunkt (hh: mm) verwenden. Hier sind die anderen (ihr NSLocaleCountryCode ist in geschweiften Klammern).

Verwenden Sie einen Punkt, hh.mm

• Dänisch (Dänemark) {DK}
• Finnisch (Finnland) {FI}
• Serbisches Montenegro (kyrillisch) {MICH}
• Serbisches Montenegro (Latein) {ME}
• Serbisch (kyrillisch) {RS}
• Serbisch (Latein) {RS}

Verwenden Sie einen Gedankenstrich, hh-mm

• Marathi (Indien) {IN}

Beachten Sie, dass Indien (nicht Marathi-Indien) auch den Ländercode IN hat und einen Doppelpunkt verwendet. Wenn Sie also nur den Ländercode überprüfen, müssen Sie sich andere NSLocale-Felder ansehen. Ich bin noch nicht durch alle Felder gegangen, aber ich vermute, dass NSLocaleScriptCode oder NSLocaleVariantCode sie unterscheiden können. Diese Komplexität ist der Grund, warum Apple uns diesen Charakter im SDK zugänglich machen sollte. Ich habe es in Radar angemeldet, also wenn Sie einverstanden sind, fordern Sie es bitte auch an, die Anzahl der Anfragen ist sehr wichtig für das, was sie tun wollen.

    
Swany 07.11.2010 03:30
quelle
0

Wenn alles andere fehlschlägt, schauen Sie sich NSLocalizedString () oder NSLocalizedStringWithDefaultValue an.

    
joshpaul 05.11.2010 21:01
quelle
0

Zunächst sollten Sie NSDateFormatter verwenden, um Ihre Daten zu formatieren. Apple empfiehlt die Verwendung der integrierten Stile, die der Benutzer in den Einstellungen anpassen kann. Der folgende Code stammt direkt aus der Apple-Dokumentation:

%Vor%     
brain 06.11.2010 23:27
quelle
0

In iOS8 und neuer können Sie DateComponentsFormatter verwenden. Unten ist ein Swift 3 Beispiel.

%Vor%     
waroo 12.03.2017 00:25
quelle

Tags und Links