Comme une .NET programmeur apprendre Objective-C, j'ai eu le même problème quand j'ai essayé de consommer .Net WebService.
Au début, je pensais que je serais en mesure d'utiliser le NSDateFormatter...
J'ai trouvé une très bonne référence pour les symboles ici, mais j'ai vite réalisé que j'avais besoin de convertir le nombre de millisecondes à quelques secondes.
J'ai écrit le code pour le faire...
Je suis encore à apprendre Obj-C, mais je ne pense pas qu'Il aurait été plus dur...
- (NSDate *) getJSONDate{
NSString* header = @"/Date(";
uint headerLength = [header length];
NSString* timestampString;
NSScanner* scanner = [[NSScanner alloc] initWithString:self];
[scanner setScanLocation:headerLength];
[scanner scanUpToString:@")" intoString:×tampString];
NSCharacterSet* timezoneDelimiter = [NSCharacterSet characterSetWithCharactersInString:@"+-"];
NSRange rangeOfTimezoneSymbol = [timestampString rangeOfCharacterFromSet:timezoneDelimiter];
[scanner dealloc];
if (rangeOfTimezoneSymbol.length!=0) {
scanner = [[NSScanner alloc] initWithString:timestampString];
NSRange rangeOfFirstNumber;
rangeOfFirstNumber.location = 0;
rangeOfFirstNumber.length = rangeOfTimezoneSymbol.location;
NSRange rangeOfSecondNumber;
rangeOfSecondNumber.location = rangeOfTimezoneSymbol.location + 1;
rangeOfSecondNumber.length = [timestampString length] - rangeOfSecondNumber.location;
NSString* firstNumberString = [timestampString substringWithRange:rangeOfFirstNumber];
NSString* secondNumberString = [timestampString substringWithRange:rangeOfSecondNumber];
unsigned long long firstNumber = [firstNumberString longLongValue];
uint secondNumber = [secondNumberString intValue];
NSTimeInterval interval = firstNumber/1000;
return [NSDate dateWithTimeIntervalSince1970:interval];
}
unsigned long long firstNumber = [timestampString longLongValue];
NSTimeInterval interval = firstNumber/1000;
return [NSDate dateWithTimeIntervalSince1970:interval];
}
J'espère que quelqu'un peut fournir une meilleure Obj-C de la solution.
Si non je peux garder cette ou de chercher un moyen de changer le format de sérialisation dans .NET
EDIT:
Sujet JSON format DateTime...
Si vous avez aucun contrôle sur le service, il serait probablement préférable de convertir la date en une chaîne de caractères dans votre DataContract objets.
La mise en forme à RFC1123 semble être une bonne idée pour moi en ce moment. Comme je peux probablement ramasser facilement à l'aide d'un NSDateFormatter.
Citation de Rick Strahl
Il n'y a pas de JavaScript date littérale et Microsoft a mis au point un format de date personnalisé qui est essentiellement une hausse marquée de la chaîne. Le format est une chaîne codée et contient le standard de la nouvelle Date(en millisecondes depuis 1970) de valeur.