example create iphone objective-c ios uidatepicker time-format

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.


No hay necesidad de una sola línea de código. Puede establecer la configuración regional desde el Tablero de Datos también adjunto la captura de pantalla

Y a esto programáticamente en Swift 3.0 también podemos hacer como

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


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")