Je suis confronté à une erreur ennuyante lorsque je cours mon application sur mon iPhone6.
J'ai besoin de convertir une heure (choisi par un datePicker) de format 12h à 24h.
Chose simple! Bon, je suis assez sûr de ça mais … mon code fonctionne sur simulateur mais pas sur l'appareil.
Le code est le suivant:
func convertTimeTo24HoursFomratSsortingng() -> Ssortingng { let dateFormatter = NSDateFormatter() // isFormatTime24Hours is a static function that returns me if the device has a 24h clock or not. It works fine both on device and on simulator //if NSDateUtility.isFormatTime24Hours() { // dateFormatter.dateFormat = "h:mm a" // return dateFormatter.ssortingngFromDate(self) //} dateFormatter.dateFormat = "HH:mm" return dateFormatter.ssortingngFromDate(self) }
Où est-ce que je fais mal?
La version iOS est 9.1 partout.
Merci d'avance pour toute réponse!
[EDIT après la question Paul.s]
Sur simulateur, il returnne la date formatée 24h (droite).
Sur l'appareil, il returnne 12h date formaté (faux).
QA1480 : définissez vous-même l'environnement en_US_POSIX
un formateur sur en_US_POSIX
. Sinon, les parameters régionaux de votre appareil affecteront les templates de date.
Il y a un exemple de la bibliothèque de développeurs d'Apple qui pourrait être lié à votre cas.
La représentation de l'heure peut être 13:00. Dans iOS, cependant, si l'user a désactivé la fonction 24 heures sur 24, l'heure peut être 13h00.
Je recommand d'éviter de fournir des formats personnalisés. Essayez d'utiliser dateStyle
et timeStyle
si possible. Cela garantira l'adaptabilité pour tous vos users.
essaye ça
lazy var dateFormatter: NSDateFormatter = { let dateFormatter = NSDateFormatter() dateFormatter.dateFormat = "dd-MM-yyyy HH mm" return dateFormatter }()
que U peut appeler la fonction comme ça
let dateYour = YourTextField.text date = dateFormatter.dateFromSsortingng(dateYour!)!
ou
var date : NSDate let dateYour2 = dateFormatter.ssortingngFromDate(date)
de toute façon puisque IOS9 U peut passer à zéro pour utiliser le format international
var time = time.descriptionWithLocale(nil) print(time) // 2015-10-30 14:12:18 +0100
let date = NSDate() // 31 Oct 2015 14:04 let formater = NSDateFormatter.init() formater.setLocalizedDateFormatFromTemplate("HH:mm") formater.ssortingngFromDate(date) // 14:04 formater.setLocalizedDateFormatFromTemplate("hh:mm") formater.ssortingngFromDate(date) // 2:12 PM formater.dateFormat = "HH:mm" formater.ssortingngFromDate(date) // 14:04 formater.dateFormat = "hh:mm" formater.ssortingngFromDate(date) // 02:04
vérifié sur simulateur, vérifié sur l'appareil … donc, difficile à dire …