iphone - create - Mostrar hora en formato de 12 y 24 horas en UIDatepicker sobre la base de la configuración de la aplicación no en la configuración del dispositivo
uidatepicker swift 4 example (9)
Configura tu UIDatepicker para que tenga una propiedad de configuración regional, de modo que no sea la configuración regional del usuario predeterminada.
Aquí está la documentation para hacerlo, y asegúrese de establecer el país, no el idioma .
Edición: En realidad, parece que la configuración regional se depreció en iOS 5.0. Supongo que Apple pensó que la gente no debería anularlo.
Mi problema es que hay un interruptor en mi aplicación que alterna entre el formato de 12 horas y 24 horas. Estoy mostrando la hora de mis etiquetas de acuerdo con eso, pero la UIDatePicker
del UIDatePicker
no cambia. La hora depende del formato de configuración de la hora del dispositivo. ¿Es posible mostrar el tiempo en UIDatePicker
acuerdo con la configuración de mi aplicación que podría ser diferente de la configuración de tiempo del dispositivo? En algún lugar leí que UIDatePicker solo respeta la configuración del dispositivo, pero aún así quiero preguntar si es posible mostrar la hora en formato de 12 y 24 horas en UIDatePicker
según la configuración de mi aplicación.
Por favor, ayúdame. Cualquier sugerencia sería altamente apreciada!
He encontrado una forma más fácil, haga clic en el inspector de atributos de UIDatePicker en el guión gráfico y establezca la configuración regional en ''Inglés (Europa)''. Esto elimina el interruptor de AM / PM y establece la hora en formato de 24 horas.
Para UIDatePicker
no puede cambiar el formato de hora a 24 o 12, depende de la configuración local del usuario en setting.app
Pruebe este código para mostrar el formato de 24 horas en el DatePicker
de DatePicker
:
NSLocale *locale = [[NSLocale alloc] initWithLocaleIdentifier:@"NL"];
[self.datePicker setLocale:locale];
Si lo comprendo correctamente, debe averiguar si la configuración del dispositivo tiene un formato de 12 horas o de 24 horas. Lo siento si esta solución es un poco tarde.
-(BOOL)returnDefaultDateFormat
{
NSString *formatStringForHours = [NSDateFormatter dateFormatFromTemplate:@"j" options:0 locale:[NSLocale currentLocale]];
NSRange containsA = [formatStringForHours rangeOfString:@"a"];
BOOL hasAMPM = containsA.location != NSNotFound;
return hasAMPM;
}
En 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
Formato fácil del resultado en su lugar
Dado que el dispositivo local no está en 24 horas. La hora seleccionada en formato 12h no tiene ningún problema. principalmente este problema se produce cuando intenta enviar una hora al servidor. y el servidor lo solicita en formato de 24 horas.
Sin embargo, para el usuario es más fácil para el usuario utilizar el formato 12h en lugar del formato 24h. pero el servidor usualmente requiere tiempo para estar en formato 24h.
Ya que mencionas
no en la configuración del dispositivo
Solo puedo asumir que está intentando que esto suceda sin interrumpir la configuración predeterminada del usuario en el teléfono. Pero si su problema es con la vista, entonces
myDatePicker.locale = NSLocale(localeIdentifier: "en_GB")
Es la única forma de hacerlo.
Lo que hice no fue mostrarlo en formato de 24 h, sino convertir el valor del resultado al formato de 24 h.
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
Swift 4 versión de la respuesta 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")