web-dev-qa-db-fra.com

Afficher l'heure au format 12 et 24 heures dans UIDatepicker sur la base des paramètres d'application non définis dans le périphérique

Mon problème est qu'il y a un commutateur dans mon application qui bascule pour le format horaire 12 heures et 24 heures. J'affiche l'heure de mes étiquettes en fonction de cela, mais le temps UIDatePicker n'est pas modifié. L'heure dépend du format des paramètres de l'heure du périphérique. Est-il possible d’afficher l’heure dans UIDatePicker en fonction des paramètres de mon application, qui peuvent être différents des paramètres de l’heure de l’appareil . Format 24 heures en UIDatePicker basé sur les paramètres de mon application.

S'il vous plaît, aidez-moi .. Toute suggestion serait très appréciée!

21
Gypsa

Pour UIDatePicker, vous ne pouvez pas modifier le format de l'heure sur 24 ou 12, cela dépend des paramètres locaux de l'utilisateur dans setting.app

14
Omar Abdelhafith

Essayez ce code pour afficher le format 24 heures en DatePicker:

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

En rapide

    // 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
24
ak2g

Swift 4 version de la réponse de ak2g:

// 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")
7
Mario Steingruber

Il n'y a pas besoin d'une seule ligne de code. Nous pouvons également définir les paramètres régionaux à partir de Story Board. J'ai joint la capture d'écran.

 enter image description here

Et pour faire cela par programme, nous pouvons également écrire le code suivant.

dateTimePicker.locale = Locale(identifier: "en_GB")
5
Jaydeep Vyas

J'ai trouvé un moyen plus simple, cliquez sur l'inspecteur d'attributs UIDatePicker dans le storyboard et définissez les paramètres régionaux sur 'Anglais (Europe)'. Cela supprime la bascule AM ​​/ PM et définit l'heure au format 24 heures.

3
naveedez

Définissez votre UIDatepicker pour avoir une propriété locale afin qu'elle ne corresponde pas aux paramètres régionaux de l'utilisateur.

Voici la documentation pour le faire, et assurez-vous de définir le pays, pas la langue .

Edit: En fait, il semble que les paramètres régionaux soient dépréciés dans iOS 5.0. Je suppose que Apple pensait que les gens ne devraient pas le remplacer.

2
Lawrence Wu

Formatez facilement le résultat à la place

Depuis l'appareil local ne sont pas dans 24 heures. sélectionner l'heure au format 12h n'a pas de problème. principalement ce problème se produit lorsque vous essayez de soumettre une heure au serveur. et le serveur le demandant au format 24 heures.

Cependant, pour un utilisateur, il est plus facile d’utiliser le format 12h plutôt que le format 24h . Mais les serveurs doivent généralement être au format 24h.

Depuis que vous mentionnez 

pas sur l'appareil

Je ne peux que supposer que vous essayez d'y parvenir sans interrompre le réglage par défaut de l'utilisateur sur le téléphone. Mais si votre problème est avec la vue, alors 

myDatePicker.locale = NSLocale(localeIdentifier: "en_GB")

est le seul moyen de le faire.

Ce que j'ai fait ne l'affiche pas au format 24h mais convertit la valeur du résultat au format 24h.

let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "HH:mm"
print("\(pickerView.date)") // 10:30 PM
let dateSelect = dateFormatter.string(from: pickerView.date)//pickerView = to your UIDatePicker()
self.tfclosing.text = dateSelect // 22:30
0
Muhammad Asyraf