2012-06-22 15 views
13

Mein Problem ist, gibt es einen Schalter in meiner App, die für 12 Stunden und 24 Stunden Zeitformat schaltet.Ich zeige meine Etiketten Zeit entsprechend, aber die UIDatePicker Zeit wird nicht geändert.Es ist Zeit abhängig von Gerät Zeiteinstellungen Format.Ist es möglich, Zeit in UIDatePicker nach meinen App-Einstellungen, die von Gerät Zeiteinstellungen abweichen können. Irgendwo habe ich gelesen, dass UIDatePicker nur Geräteeinstellungen respektiert, aber immer noch möchte ich fragen, ob es möglich ist, Zeit im 12- und 24-Stunden-Format in UIDatePicker basierend auf meinen App-Einstellungen anzuzeigen.Zeige Zeit im 12 und 24 Stunden Format in UIDatepicker auf der Basis von App-Einstellungen nicht auf dem Gerät Einstellungen

Bitte helfen Sie mir. Alle Vorschläge würden sehr geschätzt werden!

Antwort

9

Für UIDatePicker Sie können das Zeitformat zu 24 oder 12 ändern, hängt es von den Benutzern lokalen Einstellungen in setting.app

+0

können Sie Apple-Dokumentation dazu liefern. –

+0

Wir können! ....... –

+0

@AlmasAdilbek können Sie erwähnen, wie wir können ?! das ist bereits im [UIDatePicker] erwähnt (https://developer.apple.com/documentation/uikit/uidatepicker#//apple_ref/occ/instp/UIDatePicker/locale) - Internationalisierung, die das lokale Format ändern würde. –

2

Legen Sie für Ihren UIDatepicker eine Gebietsschema-Eigenschaft fest, sodass das Gebietsschema des Benutzers nicht als Standard festgelegt wird.

Hier ist die documentation dafür, und stellen Sie sicher, dass Sie die country, not the language setzen.

Bearbeiten: Eigentlich sieht es wie Locale in iOS 5.0 abgeschrieben wird. Ich denke, Apple dachte, die Leute sollten es nicht außer Kraft setzen.

+0

Lawrence Wu können Sie einen Code geben Sie bitte, weil ich bereits versucht haben, es wird nicht funktionieren sie. – Gypsa

+0

Ich bin nicht mehr sicher, weil es scheint, dass die locale-Eigenschaft in der neuesten OS abgeschrieben wird, aber lesen Sie diese ähnliche Fragen: http://stackoverflow.com/questions/6197641/24hr-uidatepicker http: // stackoverflow .com/questions/2648719/uidatepicker-locale-does-nothing –

+0

Entschuldigung die Links sind nutzlos. Können Sie etwas anderes vorschlagen. – Gypsa

31

diesen Code Versuchen Sie 24 Stunden-Format in DatePicker zu zeigen:

NSLocale *locale = [[NSLocale alloc] initWithLocaleIdentifier:@"NL"]; 
[self.datePicker setLocale:locale]; 
+0

Ausgezeichnete Antwort! Vielen Dank! –

+0

Die einzige Antwort, die funktioniert – CRDave

+2

Es funktioniert für mich, danke. Aber warum funktioniert es? – Miroslav

0

Wenn ich Sie richtig verstehe, müssen Sie herausfinden, ob die Geräteeinstellungen 12 Stunden oder 24 Stunden haben. Tut mir leid, wenn diese Lösung ein wenig zu spät ist.

-(BOOL)returnDefaultDateFormat 
    { 
     NSString *formatStringForHours = [NSDateFormatter dateFormatFromTemplate:@"j"  options:0 locale:[NSLocale currentLocale]]; 
     NSRange containsA = [formatStringForHours rangeOfString:@"a"]; 
     BOOL hasAMPM = containsA.location != NSNotFound; 
     return hasAMPM; 
} 
2

Ich habe einen einfacheren Weg, klicken Sie auf den UIDatePicker Attribute Inspektor auf Storyboard, und legen Sie das Gebietsschema auf ‚English (Europe)‘ gefunden. Dies entfernt den AM/PM-Schalter und stellt die Uhrzeit auf 24-Stunden-Format ein.

+0

Ich wünschte, es gab mehr Details zu dieser Antwort. –

15

In Swift

// myDatePicker is yourUIDatePicker Outlet 
    @IBOutlet weak var myDatePicker: UIDatePicker! 

    // For 24 Hrs 
    myDatePicker.locale = NSLocale(localeIdentifier: "en_GB") as Locale 

    //For 12 Hrs 
    timePickerView.locale = NSLocale(localeIdentifier: "en_US") as Locale 
1

Es gibt keine Notwendigkeit einer einzigen Code-Zeile Sie das Gebietsschema vom Storyboard festgelegt kann ich anhängen auch den Screenshot

enter image description here

Und dazu programmgesteuert in swift 3.0 können wir auch tun

dateTimePicker.locale = Locale(identifier: "en_GB") 
2

Swift 4 Version von ak2g Antwort:

// myDatePicker is yourUIDatePicker Outlet 
@IBOutlet weak var myDatePicker: UIDatePicker! 

// For 24 Hrs 
myDatePicker.locale = Locale(identifier: "en_GB") 

//For 12 Hrs 
myDatePicker.locale = Locale(identifier: "en_US")