12
votes

JSON Date de Nsdate Numéro

J'ai une chaîne de date au format JSON, cela ressemble à ceci: 2013-05-22T10: 54: 40.437

Et j'essaie de le convertir en Nsdate. P>

- (NSString *)dateFromString:(NSString *)datestring{
    // Convert string to date object
    NSDateFormatter *dateFormat = [[NSDateFormatter alloc] init];
    [dateFormat setDateFormat:@"yyyy'-'MM'-'dd'T'HH':'mm':'ss"];

    NSDate *date = [dateFormat dateFromString:datestring];
    //date is nil here.
    NSDateFormatter *newDateFormatter = [[NSDateFormatter alloc]init];
    [newDateFormatter setDateFormat:@"MM/dd/yyyy"];
    NSString *newString = [newDateFormatter stringFromDate:date];
    NSLog(@"Date -- %@",datestring);


    return newString;
}


3 commentaires

perdre les citations simples dans la chaîne


et vérifiez votre format ici Unicode.org/reports/tr35/tr35 -6.html # date% 5fforat% 5fpattern s


@Desdenova: La version que vous avez liée est assez ancienne, c'est l'actualité sur, utilisé dans iOS6 UNICODE.ORG/REPORTS/TR35/TR35-25.HTML#Date_Format_Patterns


4 Réponses :


31
votes

Utilisez ce format de date:

let isoDateFormatter = ISO8601DateFormatter()
isoDateFormatter.formatOptions = [.withInternetDateTime, .withFractionalSeconds]


2 commentaires

@ikinci Viking: Merci pour votre correction. Je voulais juste que possible aussi peu de modifications que possible pour corriger le code de la question. Mais vous avez raison, c'est beaucoup plus lisible sans s'échapper


Comment faire l'opération opposée? Nsdate to Json String la manière appropriée?



3
votes

Votre format de date est incorrect. Il devrait être:

[dateFormat setDateFormat:@"yyyy-MM-dd'T'HH:mm:ss:SSS"];


0 commentaires

2
votes
If your date format is "2014-02-25T13:05:10+00:00" then,
your code should be like this....

    NSURL *url = [NSURL URLWithString:@"your URL"];
    NSString *str = [[NSString alloc] initWithContentsOfURL:url usedEncoding:Nil error:Nil];

    NSDateFormatter *dateFor = [[NSDateFormatter alloc] init];
    [dateFor setDateFormat:**@"yyyy-MM-dd'T'HH:mm:ss'+'SS:SS"**];

    NSDate *yourDate = [dateFor dateFromString:str];
    NSLog(@"Your Date: %@",yourDate);

0 commentaires

2
votes
-(void)viewDidLoad {

    self.date = [dateForRFC3339DateTimeString:@"2015-01-18T01:00:00.000Z"];

}


-(NSDate *)dateForRFC3339DateTimeString:(NSString *)rfc3339DateTimeString {

    NSDateFormatter *rfc3339DateFormatter = [[NSDateFormatter alloc] init];

    [rfc3339DateFormatter setDateFormat:@"yyyy'-'MM'-'dd'T'HH':'mm':'ss'.'SSS'Z'"];
    [rfc3339DateFormatter setTimeZone:[NSTimeZone timeZoneForSecondsFromGMT:0]];

    // Convert the RFC 3339 date time string to a NSDate.
    NSDate *result = [rfc3339DateFormatter dateFromString:rfc3339DateTimeString];
    return result;
} 

0 commentaires