Y a-t-il un moyen de détecter si l'appareil actuel de l'application utilise 12h notre format 24h, de sorte que je puisse utiliser un NSDateFormatter pour 12h et un pour 24h en fonction de la langue des utilisateurs/paramètre de loaction ? Tout comme UIDatePicker détecte et affiche le sélecteur AM/PM s'il est au format 12h.
Réponses
Trop de publicités?J'ai compris, c'est assez facile. Je viens d'ajouter ce code à viewDidLoad
:
NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
[formatter setLocale:[NSLocale currentLocale]];
[formatter setDateStyle:NSDateFormatterNoStyle];
[formatter setTimeStyle:NSDateFormatterShortStyle];
NSString *dateString = [formatter stringFromDate:[NSDate date]];
NSRange amRange = [dateString rangeOfString:[formatter AMSymbol]];
NSRange pmRange = [dateString rangeOfString:[formatter PMSymbol]];
BOOL is24h = (amRange.location == NSNotFound && pmRange.location == NSNotFound);
[formatter release];
NSLog(@"%@\n",(is24h ? @"YES" : @"NO"));
Et il renvoie parfaitement YES
ou NO
selon les lieux.
Mostafa Torbjørn Berg
Points
1617
Et voici une version mise à jour de Swift 3.0
func using12hClockFormat() -> Bool {
let formatter = DateFormatter()
formatter.locale = Locale.current
formatter.dateStyle = .none
formatter.timeStyle = .short
let dateString = formatter.string(from: Date())
let amRange = dateString.range(of: formatter.amSymbol)
let pmRange = dateString.range(of: formatter.pmSymbol)
return !(pmRange == nil && amRange == nil)
}
beowulf
Points
115
Wiingaard
Points
1247
Voici la version Swift :
func using12hClockFormat() -> Bool {
let formatter = NSDateFormatter()
formatter.locale = NSLocale.currentLocale()
formatter.dateStyle = NSDateFormatterStyle.NoStyle
formatter.timeStyle = NSDateFormatterStyle.ShortStyle
let dateString = formatter.stringFromDate(NSDate())
let amRange = dateString.rangeOfString(formatter.AMSymbol)
let pmRange = dateString.rangeOfString(formatter.PMSymbol)
return !(pmRange == nil && amRange == nil)
}