69 votes

Conversion d'une chaîne de caractères en NSDate

Comment est-il possible de convertir une chaîne de caractères en un NSDate sur iOS ?

197voto

Suresh Kumar Points 1154
NSString *dateStr = @"20100223";

// Convert string to date object
NSDateFormatter *dateFormat = [[NSDateFormatter alloc] init];
[dateFormat setDateFormat:@"yyyyMMdd"];
NSDate *date = [dateFormat dateFromString:dateStr];  

// Convert date object to desired output format
[dateFormat setDateFormat:@"EEEE MMMM d, YYYY"];
dateStr = [dateFormat stringFromDate:date];  
[dateFormat release];

J'espère que cela vous aidera.

15 votes

J'ai trouvé un article qui explique toutes les valeurs du format ici : alexcurylo.com/blog/2009/01/29/nsdateformatter-formatting

0 votes

Notez également la liste de unicode.org : unicode.org/reports/tr35/tr35-19.html#Date_Format_Patterns

0 votes

Savez-vous pourquoi la minuscule yyyy et dd fonctionne et la majuscule MM fonctionne... ?

9voto

Giao Points 7955

Vous voudrez jeter un coup d'oeil à NSDateFormatter . Déterminez le format de la chaîne de date et utilisez ensuite dateFromString: pour convertir la chaîne en un objet NSDate.

5voto

Niketan Rana Points 49
NSDateFormatter *dateFormat = [[NSDateFormatter alloc] init];
[dateFormat setDateFormat:@"dd/MM/YYYY"];
NSDate *date = [dateFormat dateFromString:dateStr];  
list = [self getYear:date];

- (NSMutableArray *)getYear:(NSDate*)date
{
    NSDateComponents *components = [[NSCalendar currentCalendar] components:NSCalendarUnitDay | NSCalendarUnitMonth | NSCalendarUnitYear fromDate:date];

    int year = [components year];
    int month = [components month];
    int day = [components day];
    NSLog(@"%d",year);

    NSMutableDictionary *dateDict = [[NSMutableDictionary alloc] initWithObjectsAndKeys:[NSString stringWithFormat:@"%d", day], @"day", [NSString stringWithFormat:@"%d", month], @"month", [NSString stringWithFormat:@"%d", year], @"year", nil];

    return dateDict;
}

3voto

Raphael Souza Points 496

Ma version de travail en Swift

func dateFor(timeStamp: String) -> NSDate
{
    let formater = NSDateFormatter()
    formater.dateFormat = "HH:mm:ss:SSS - MMM dd, yyyy"
    return formater.dateFromString(timeStamp)!
}

func timeStampFor(date: NSDate) -> String
{
    let dateFormatter = NSDateFormatter()
    dateFormatter.dateFormat = "HH:mm:ss:SSS - MMM dd, yyyy"

    return dateFormatter.stringFromDate(date)
}

2voto

OhadM Points 2397

A simple approche même si vous avez une base de données sqlite :

// NSTimeInterval is basically typedef of double so you can receive it as double also.
NSTimeInterval *current = [[NSDate date] timeIntervalSince1970]; 
[DB addToDB:current];

//retrieve the date from DB
NSDate *retrievedDateItem = [[NSDate alloc] initWithTimeIntervalSince1970:[getDBValueAsDouble]]; //convert it from double (NSTimeInterval) to NSDate
// Set the style
[dateFormatter setDateStyle:NSDateFormatterMediumStyle];
[dateFormatter setTimeStyle:NSDateFormatterMediumStyle];
// Converted to string
NSString *convertedDate = [dateFormatter stringFromDate:retrievedDateItem];

La sortie pour cet exemple :

3 août 2015, 12:27:50 PM

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X