Tengo un drawRect que hace que una línea de tiempo se parezca un poco a iCal. Uso un ciclo for para escribir los tiempos a lo largo de una vista de desplazamiento. Me preguntaba si A) hay una manera de determinar si el usuario ha elegido un reloj de 12 o 24 horas en la configuración del sistema y B) si hay una forma más eficiente de cambiar las etiquetas de tiempo y luego llamar a una consulta 'if' en cada pase del bucle 'for'. Saludos Buscar si el usuario prefiere reloj de 12/24 horas?
Respuesta
NSDate *today = [NSDate date];
NSString *formattedString = [NSDateFormatter localizedStringFromDate:today dateStyle: kCFDateFormatterNoStyle timeStyle: kCFDateFormatterShortStyle];
NSRange foundRange;
foundRange = [formattedString rangeOfString:"am" options:NSCaseInsensitiveSearch];
if(foundRange.location == NSNotFound) {
foundRange = [formattedString rangeOfString:"pm" options:NSCaseInsensitiveSearch];
}
BOOL isAMPMSettingOn = (foundRange.location != NSNotFound);
NSDateFormatter *dateFormatter = [[[NSDateFormatter alloc] init] autorelease];
[dateFormatter setDateStyle:NSDateFormatterNoStyle];
[dateFormatter setTimeStyle:NSDateFormatterLongStyle];
if([[dateFormatter dateFormat] rangeOfString:@"a"].location != NSNotFound) {
// user prefers 12 hour clock
} else {
// user prefers 24 hour clock
}
Esta es en realidad la mejor respuesta, ya que muchos países especifican AM y PM como a.m. y p.m .. – MiguelB
@Leuguimerius pero algunos idiomas como el chino usan caracteres totalmente diferentes para AM y PM. Vea mi respuesta http://stackoverflow.com/a/23621308/72176 para saber cómo manejar eso. –
@WilliamDenniss ¡Brillante! Resuelve todo No tenía idea de que existiera ese formateador. – MiguelB
Las respuestas anteriores suponen que los símbolos "PM" "AM" y se representan en caracteres latinos. Este código adaptado de keyur bhalodiya hace un mejor trabajo en el manejo de idiomas como el chino, utilizando los métodos AMSymbol
y PMSymbol
de NSDateFormatter
.
-(BOOL)uses24hourTime
{
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]];
return (amRange.location == NSNotFound && pmRange.location == NSNotFound);
}
- 1. ¿Cómo saber si el usuario prefiere millas o kilómetros?
- 2. DateTime.Parse DD/Reloj MM/AAAA 24 horas
- 3. ¿Cómo se convierte el tiempo de 12 horas en el tiempo de reloj de 24 horas en PHP?
- 4. NSDateFormatter cuando el iPhone está configurado en el reloj de 12 horas
- 5. Detecta si el formato de hora está en formato de 12 horas o 24 horas
- 6. ¿Detecta si el iPhone muestra la hora en el modo de 12 horas o 24 horas?
- 7. ¿Detecta AM/PM frente a la preferencia de reloj de 24 horas de la información de configuración regional de Java?
- 8. Añadiendo "0" si el reloj tiene un dígito
- 9. iOS: ¿Muestra la hora en formato de 24 horas si la configuración regional es adecuada?
- 10. ¿Cómo puedo determinar si el iPhone está configurado para visualización de 12 horas o 24 horas?
- 11. ¿Cómo se comporta el caché del navegador si el reloj local no es coherente con el reloj del servidor?
- 12. Buscar el idioma actual del usuario
- 13. Buscar el nombre de usuario de Windows dentro de R
- 14. Buscar si el usuario es miembro de Active Directory Group ASP.NET VB?
- 15. Si 'timesince' es más de 24 horas, solo muestre el recuento de días y no el recuento de horas
- 16. Buscar entre fechas y horas en SQL Server 2008
- 17. ¿Qué hace FSTP DWORD PTR DS: [ESI + 1224]?
- 18. Cómo redondear las horas en función de los minutos (horas + 0 si mín <30, horas + 1 en caso contrario)?
- 19. UISeachBar detectar cuando el usuario pulse el botón Buscar
- 20. Perdiendo tiempo sin cambiar el reloj del sistema de Windows
- 21. ¿Cómo restar 2 horas de la hora local del usuario?
- 22. Active Directory: buscar solo objetos de usuario
- 23. ¿Prefiere devolver el objeto modificado o no?
- 24. Buscar carpeta temporal para el servicio de red del usuario?
- 25. Rails ActiveRecord: Buscar todos los usuarios excepto el usuario actual
- 26. Comprobando si el usuario de mysql existe
- 27. Establecer el reloj de hardware en Python?
- 28. Modo de organización de Emacs: cómo ajustar el reloj anterior si me olvido de marcar
- 29. reloj de arena android
- 30. jquery datetimepicker formato de hora de 24 horas
Tienes que tener cuidado. Si el usuario ha configurado el modo de 12/24 horas en Configuración en contra de la configuración regional, entonces NSDateFormatter (y probablemente algunos otros) ignoran la presencia/ausencia de cualquier calificador 'a' y proporcionan (o no) el valor AM/PM basado en el Ajuste del modo de 12/24 horas. Todo es bastante complicado. –