65.9K
CodeProject is changing. Read more.
Home

Quick Tip – Converting JSON Serialized .NET DateTime to JavaScript Date

starIconstarIconstarIconstarIconstarIcon

5.00/5 (2 votes)

Dec 1, 2011

CPOL
viewsIcon

42982

Converting JSON serialized .NET DateTime to JavaScript Date.

Quick Tip – Converting JSON Serialized .NET DateTime to JavaScript Date

When you are using the controller JSON method in ASP.NET MVC or scriptable WCF services, you sometimes have to serialize a .NET DateTime property. DataContractJsonSerializer will serialize it into the the following format:

/Date(1235398665390)/ 

This format indicates to the client side parsers that the data fragment that was sent is a date representation. But how can you convert it to a JavaScript Date object?

There are a few methods:

  • “Brutal Force”: Extract the number using a Regular Expression or substring functions and pass it to the Date object which gets the time in milliseconds in its constructor:
  • var date = new Date(1235398665390);
  • Server-side approach: Send to the client side not a .NET DateTime but the total milliseconds and then use the same constructor from the previous bullet. You should pay attention that JavaScript’s base date is 1/1/1970. The following code can help:
  • var baseDate = new DateTime(1970, 1, 1); 
    var currentDate = DateTime.Now.ToUniversalTime(); 
    TimeSpan ts = new TimeSpan(dcurrentDate.Ticks - baseDate.Ticks); 
    return ts.TotalMilliseconds;
  • The eval way: On the client side, use the eval function to evaluate and create the Date object:
  • var date = eval("new " + dateFromTheServer.slice(1, -1));

    Where dateFromTheServer is in the format which was presented at the top of the post.

There are probably other ways which can help you. What is your way?