Buchannon
Buchannon

Reputation: 1691

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!

Upvotes: 8

Views: 4506

Answers (3)

Justyn
Justyn

Reputation: 1500

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

Upvotes: 4

Buchannon
Buchannon

Reputation: 1691

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];
}

Upvotes: 12

psy
psy

Reputation: 2809

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.

Upvotes: 2

Related Questions