Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Formatting a DateTime object from .NET into a NSDate for objective-c

I am working with an API that returns a .NET DateTime object into my iOS application. I'm a little confused at what's going on, the DateTime looks fine when it leaves the API, but when it comes in it goes through JSON and comes in as a string that looks like this:

/Date(1303884000000-0600)/

WTF is that and how can I turn it into a NSDate object??

Thanks!

like image 850
Buchannon Avatar asked Apr 27 '11 20:04

Buchannon


3 Answers

From Parsing JSON dates on IPhone I found the following function to be perfect:

    - (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];
}
like image 92
Buchannon Avatar answered Nov 16 '22 03:11

Buchannon


The RestKit library has an NSDateFormatter subclass for just this. Take a look here for inspiration:

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

like image 35
Justyn Avatar answered Nov 16 '22 04:11

Justyn


Essentially what you're getting there is milliseconds from January 1st 1970 UTC, with the -0600 being the timezone offset. Take a look at this blog post http://weblogs.asp.net/bleroy/archive/2008/01/18/dates-and-json.aspx

You would probably have to write a custom NSDateFormatter to handle a date in that format, or you could format it in .NET (easier), output a string in JSON, and then use a standard NSDateFormatter.

like image 2
psy Avatar answered Nov 16 '22 04:11

psy