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?