Converting .NET DateTime to JSON [duplicate] Converting .NET DateTime to JSON [duplicate] json json

Converting .NET DateTime to JSON [duplicate]


What is returned is milliseconds since epoch. You could do:

var d = new Date();d.setTime(1245398693390);document.write(d);

On how to format the date exactly as you want, see full Date reference at http://www.w3schools.com/jsref/jsref_obj_date.asp

You could strip the non-digits by either parsing the integer (as suggested here):

var date = new Date(parseInt(jsonDate.substr(6)));

Or applying the following regular expression (from Tominator in the comments):

var jsonDate = jqueryCall();  // returns "/Date(1245398693390)/"; var re = /-?\d+/; var m = re.exec(jsonDate); var d = new Date(parseInt(m[0]));


I have been using this method for a while:

using System;public static class ExtensionMethods {  // returns the number of milliseconds since Jan 1, 1970 (useful for converting C# dates to JS dates)  public static double UnixTicks(this DateTime dt)  {    DateTime d1 = new DateTime(1970, 1, 1);    DateTime d2 = dt.ToUniversalTime();    TimeSpan ts = new TimeSpan(d2.Ticks - d1.Ticks);    return ts.TotalMilliseconds;  }}

Assuming you are developing against .NET 3.5, it's a straight copy/paste. You can otherwise port it.

You can encapsulate this in a JSON object, or simply write it to the response stream.

On the Javascript/JSON side, you convert this to a date by simply passing the ticks into a new Date object:

jQuery.ajax({  ...  success: function(msg) {    var d = new Date(msg);  }}


To parse the date string using String.replace with backreference:

var milli = "/Date(1245398693390)/".replace(/\/Date\((-?\d+)\)\//, '$1');var d = new Date(parseInt(milli));