9
votes

Convertir nstring à ce jour

J'ai deux cordes: date1 = 3-3-2011;

et je souhaite convertir en 3-mars-2011 et l'afficher dans l'étiquette. P>

NSString *myString = 3-3-2011;

NSDateFormatter *dateFormatter = [[NSDateFormatter alloc]init];
[dateFormatter setDateFormat:@"d-MM-YYYY"];
NSDate *yourDate = [dateFormatter dateFromString:myString];



//now format this date to whatever you need…
[dateFormatter setDateFormat:@"d-MMM-YYYY"];
NSString *resultString = [dateFormatter stringFromDate:yourDate];
[dateFormatter release];


0 commentaires

3 Réponses :


2
votes

Jetez un coup d'œil à NsdateFormatter . En particulier, jetez un coup d'œil au Datefromstring: et stringfromdate: méthodes. Vous aurez besoin de convertir votre chaîne d'origine en un nsdate, puis de convertir cela Nsdate en une autre chaîne.

Un astuce pour utiliser NsdateFormatter: Assurez-vous de toujours définir un local. Si vous ne définissez pas manuellement une locale, il dispose d'un bogue concernant les paramètres d'horloge de 12/24 heures. L'exemple de code sur la page I liée pour montrer comment définir un local.


0 commentaires

13
votes

Vous pouvez utiliser nsdateformatter code>.

  1. Convertissez votre chaîne actuelle en nsdate code> objet, afin que vous puissiez Convertissez-le en n'importe quel format que vous voulez. p>

    [dateFormatter setDateFormat:@"d-MMMM-yyyy"];
    NSString *resultString          =   [dateFormatter stringFromDate:yourDate];
    [dateFormatter release];
    
  2. Vous pouvez désormais convertir ce nsdate code> à n'importe quel format souhaité. p>

    NSString *myString          =   @"3-3-2011";
    NSDateFormatter *dateFormatter  =   [[NSDateFormatter alloc]init];
    [dateFormatter setDateFormat:@"d-M-yyy"];
    NSDate *yourDate                =   [dateFormatter dateFromString:myString];
    


5 commentaires

Nsstring * mystring = 3-3-2011; Nsdateformatter * dateformatter = [[[Nsdateformatter Alloc] init]; [DateFormatter SetdateFormat: @ "D-MM-AAAAYY"]; Nsdate * Yourdate = [DateFormatter DateFromstring: mystring]; // Format maintenant cette date à tout ce dont vous avez besoin ... [DateFormatter SetDateDateFormat: @ "D-mmm-aaaa aaaa"]; Nstring * RésultatsTring = [DateFormatter StringFromdate: Yourdate]; [DateFormatter version]; Mais Yourdate = 2010-12-25 18:30:00 +0000 résultats = 26 décembre 2010 Je veux 3-mars-2010


@Sam utilise @ "d-m-aaayy" . Je n'ai aucune idée de la façon dont cette réponse a eu 2 upvotes.


@fluchtpunkt est correct sur les deux chefs d'accusation. Le y minuscule est important. Voir Unicode.org/reports/tr35/#date_format_Patterns .


La chaîne de format doit être @ "D-M-AAAAYY" dans les deux cas. @ "D-M-LLL" et @ "D-MMMM-LLLL" sont incorrects.


Vous devez définir le style, pas le format, si vous souhaitez présenter les dates de manière appropriée. Donc, définissez le format de l'entrée (à partir de fichiers, etc., pas d'utilisateur), mais utilisez le style lors de l'affichage.



2
votes

Utilisez dmy (ou mdy, selon lequel est le mois): xxx

et voir le Standard UNICODE mentionné dans les documents Apple.


0 commentaires