Javascript serialization of DateTime in asp.net is not giving a javascript date object?
This is a known limitation with JSON. This answer might help you, specifically:
value = new Date(parseInt(value.replace("/Date(", "").replace(")/",""), 10));
This seems to work (Thanks Chris S for the idea). In the C# do a replace to remove the string wrapper from around the date object;
using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.UI; using System.Web.Script.Serialization; using System.Web.Script.Services; using System.Web.Services; using System.Web.UI.WebControls; namespace test { [ScriptService] public partial class testing: System.Web.UI.Page { protected string strCaseID; protected string jsonCase; protected void Page_Load(object sender, EventArgs e) { if (!IsPostBack) { strCaseID =Tools.GetQueryObject("id"); // get a complex object with dates, string, arrays etc. jsonESHACase = new JavaScriptSerializer().Serialize(objCase.Get(strCaseID )) .Replace("\"\\/Date(", "new Date(").Replace(")\\/\"", ")"); } } } }
..and after removing the quotes and adding the new prefix to Date this js now works. Hooray!
testCase= <%= jsonESHACase %>; if (testCase) { document.write(testCase["ClosingDate"].format("MM dd yyyy")); }
Simple javascript manipulation like this:
function(param){ var date = new Date(parseInt(param.substr(6))); return date;}
Pass in JSON date as param to the function and it will return a javascript date.