Форматирование объекта DateTime из .NET в NSDate для target-c - PullRequest
7 голосов
/ 28 апреля 2011

Я работаю с API, который возвращает объект .NET DateTime в мое приложение iOS. Я немного запутался в том, что происходит, DateTime выглядит хорошо, когда покидает API, но когда он входит, он проходит через JSON и выглядит как строка, которая выглядит следующим образом:

/Date(1303884000000-0600)/

WTF это и как я могу превратить его в объект NSDate ??

Спасибо!

Ответы [ 3 ]

12 голосов
/ 03 мая 2011

С Разбор дат JSON на IPhone Я обнаружил, что следующая функция идеально подходит:

    - (NSDate*) getDateFromJSON:(NSString *)dateString
{
// Expect date in this format "/Date(1268123281843)/"
int startPos = [dateString rangeOfString:@"("].location+1;
int endPos = [dateString rangeOfString:@")"].location;
NSRange range = NSMakeRange(startPos,endPos-startPos);
unsigned long long milliseconds = [[dateString substringWithRange:range] longLongValue];
NSLog(@"%llu",milliseconds);
NSTimeInterval interval = milliseconds/1000;
return [NSDate dateWithTimeIntervalSince1970:interval];
}
4 голосов
/ 29 октября 2013

Библиотека RestKit имеет подкласс NSDateFormatter именно для этого. Взгляните сюда для вдохновения:

https://github.com/RestKit/RestKit/blob/master/Code/Support/RKDotNetDateFormatter.h https://github.com/RestKit/RestKit/blob/master/Code/Support/RKDotNetDateFormatter.m

2 голосов
/ 28 апреля 2011

По сути, вы получаете миллисекунды с 1 января 1970 года по Гринвичу, при этом -0600 - это смещение часового пояса. Посмотрите на это сообщение в блоге http://weblogs.asp.net/bleroy/archive/2008/01/18/dates-and-json.aspx

Возможно, вам придется написать собственный NSDateFormatter для обработки даты в этом формате, или вы можете отформатировать ее в .NET (проще), вывести строку в JSON, а затем использовать стандартный NSDateFormatter.

...