Pregunta

Realmente solo quiero saber si el usuario ha configurado el iPhone en modo de 12 horas para mostrar la hora.

La clase NSLocale parecía estar describiendo (en términos vagos e inespecíficos sin ningún ejemplo o métodos aparentemente útiles) lo que buscaba.

Así que he creado algunos objetos NSLocale de esta manera:

NSLocale *systemLocaleApparently = [NSLocale systemLocale];
NSLocale *currentLocaleWithLotsOfGoodies = [NSLocale autoupdatingCurrentLocale];

Cuando inspecciono estos objetos usando el depurador o NSLog () , lo mejor que puedo obtener es algo en este sentido:

<CFLocale 0x1278e0 [0x382084f8]>{type = system, identifier = ''} 

La configuración regional actual tiene una cadena de ID, pero nada más.

De la documentación, puedo buscar valores de la configuración regional, y uno de estos es un objeto NSCalendar . Así que lo recupero y lo miro, y me dice que es "gregoriano".

Todo lo cual aparentemente es útil para alguien ... pero lo que realmente me gustaría es un gran diccionario de atributos que muestre todas las propiedades reales del sistema, principalmente para que mi NSDateFormatters no ' No sigo explotando cuando un usuario elige el formato de 12 horas a pesar de que he forzado a los formateadores a usar la configuración regional en_US_POSIX y un formato fijo setDate .

(Estoy seguro de que NSCalendarDate nunca solía tener estos problemas ...)

Con suerte me estoy perdiendo algo evidente (y probablemente vergonzosamente) obvio, pero tal vez alguien amable lo comparta conmigo. Por favor :)

¿Fue útil?

Solución

Aquí hay una manera de saber si el usuario ha configurado su formato de hora en un formato de 12 o 24 horas:

NSDateFormatter* formatter = [[[NSDateFormatter alloc] init] autorelease];
[formatter setTimeStyle:NSDateFormatterMediumStyle];
// Look for H (24-hour format) vs. h (12-hour format) in the date format.
NSString* dateFormat = [formatter dateFormat];
BOOL using24HourClock = [dateFormat rangeOfString:@"h"].location == NSNotFound;
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top