2009-12-13 7 views

Répondre

3

Votre meilleur pari est certainement à le faire [someNSDateFormatter stringFromDate: someDate] ou [someNSDateFormatter dateFromString: someString], mais si vous voulez vraiment faire ce que vous demandez au sujet, jetez un oeil à la Unicode standard for date format strings, ce qui est iPhone OS utilise. En particulier, notez que a est utilisé pour le symbole AM ​​/ PM et h/hh/H/HH/k/KK sont toutes les possibilités pour le symbole de l'heure, selon si elle compte de 0 ou 1, est de 12 ou 24 heures, et des pads avec des zéros ou non.

Votre code pour mettre en œuvre ce pourrait être quelque chose le long des lignes de:

NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init]; 
[dateFormatter setDateStyle:NSDateFormatterNoStyle]; 
[dateFormatter setTimeStyle:NSDateFormatterLongStyle]; 

if([[dateFormatter dateFormat] containsString:@"a"]) { 
    // do something 
} else { 
    // do something else 
} 

[dateFormatter release]; 

Mais, vous devez être prudent, car les caractères littéraux peuvent être contenus dans des guillemets simples, de sorte que vous auriez à expliquer que . Vous pourriez essayer de chercher h ou k, mais faites attention car les Français représentent 14h05 comme 14h05 (je ne sais pas si c'est comme ça qu'il apparaît sur l'iPhone, mais c'est comme ça qu'ils l'écriront souvent), donc le format de l'heure pourrait inclure quelque chose comme k'h'mm

1

Il ne s'agit pas d'un paramètre régional, mais plutôt d'une collection de paramètres régionaux. Cela fait partie des formats d'heure, dont il y en a quatre (sur Mac, au moins), qui n'utilisent pas nécessairement la même désignation AM/PM. Sur Mac, il est même possible d'utiliser un segment d'heure de 24 heures avec un segment AM/PM, pour des sorties comme "17:35 PM", mais néanmoins possible. La méthode la plus simple consiste à demander simplement au formateur de date de formater l'heure à partir de l'objet date pour vous, en supposant que cela soit logique pour ce que vous faites. Si non, des moments amusants sont à votre portée. Sur l'iPhone, l'interface utilisateur pour les chaînes de format est juste un interrupteur à bascule (24 heures, on ou off), donc vous ne devriez pas avoir à vous soucier de cas pathologiques. Sélectionnez l'une des chaînes de format dans AppleICUTimeFormatStrings dans les valeurs par défaut de l'utilisateur, puis analysez-la en recherchant l'un des AM/PM format characters. Assurez-vous de passer outre tout ce qui se trouve entre '', car ce contenu est une chaîne littérale, pas des caractères de format.

Il suffit de regarder si vous apportez votre application sur le Mac. Si vous le faites, je n'essaierais pas de donner un sens aux chaînes de format - faites-en une case à cocher dans vos propres Préférences.

+0

Merci beaucoup! On dirait qu'il y a plus de problèmes que ça en vaut la peine (et pas très robustes) ... Je vais juste en faire un switch sous les préférences de mon application. –

+0

Si vous faites cela dans une application iPhone, les utilisateurs ne peuvent pas s'attendre à le voir et/ou peuvent l'appeler comme redondant, car il existe déjà un tel commutateur dans les paramètres pour toutes les applications (régissant les formats d'heure). La pire des chances est que les réviseurs auront une mauvaise journée ce jour-là et rejettera votre application pour cette "fonctionnalité dupliquée" apparente. –