2012-01-09 2 views
0

Я пытаюсь разобрать JSON с даты производства службой .NET для объекта NSDateКак разобрать/Date (ххх + 0000)/в SBJSON

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

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

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

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

+0

Это выглядит как отметку времени в миллисекундах (1326063600000 -> Jan 8/12 5:00 вечера), с 0000 (ака GMT/UTC) смещение временной зоны. –

+0

да есть. Я ищу элегантный способ разобрать его. До сих пор я решил использовать подстроку этого значения как временную метку (timeInterval). Это просто немного грубо –

ответ

1

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

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

NSDate *date = [NSDate dateWithTimeIntervalSince1970:SOME_TIME_INTERVAL]; 

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

+0

Я искал лучшее решение, но, думаю, я буду придерживаться этого. Также +1 для секунд/миллисекунды напоминание –

2

Это категория я сделал для разбора из .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]; 
} 
Смежные вопросы