Как разобрать / Дата (ххх + 0000) / в SBJSON - PullRequest
0 голосов
/ 09 января 2012

Я пытаюсь проанализировать JSON с датой, созданной службой .NET, к объекту NSDate

{
 "Dashboard": {
    "Date": "/Date(1326063600000+0000)/"
    }
}

Каков подход к преобразованию такой форматированной даты с использованием SBJSON?Я извлек значение в NSString, используя

//dict is NSDictionary with Dashboard
NSString* dateString=[dict objectForKey:@"Date"];

, а затем остановился.Будем благодарны за любые предложения.

Ответы [ 2 ]

2 голосов
/ 29 марта 2012

Это категория, которую я сделал для разбора .NET

//parses a date from format "/Date(0000000000000+0000)/"
+(NSDate*)dateFromEpocString:(NSString*)epocString {

    if ([epocString isEqual:[NSNull null]])
        return nil;

    NSString* miliMinutes = [epocString substringWithRange:NSMakeRange(6,13)];
    long long minutesSince1970 = [miliMinutes longLongValue] / 1000;
    int timeOffset = [[epocString substringWithRange:NSMakeRange(19,3)] intValue];
    long long minutesOffset = timeOffset * 60 * 60;
    return [NSDate dateWithTimeIntervalSince1970:minutesSince1970 + minutesOffset];
}
1 голос
/ 10 января 2012

Из комментариев уже звучит, как будто вы извлекли отметку времени.

Вы, вероятно, хотите использовать конструктор эпохи NSDate: dateWithTimeIntervalSince1970:

NSDate *date = [NSDate dateWithTimeIntervalSince1970:SOME_TIME_INTERVAL];

В этом случае SOME_TIME_INTERVAL будет значением NSTimeInterval (просто псевдоним для двойного): 1326063600. Не забудьте разделить полученное значение на 1000. NSTimeIntervals выражаются в секундах, а не в миллисекундах.

...