new month fecha day c# asp.net javascript datetime serialization

c# - month - ¿La serialización de Javascript de DateTime en asp.net no está dando un objeto de fecha de javascript?



set date javascript (11)

Aquí hay una opción usando Date.parse y DateTime.ToString:

var lowerBound = new Date(Date.parse("@Model.LowerBound.ToString("MMMM dd, yyyy")"));

Si necesita tiempo, considere lo siguiente. Creo que esto se basa en una nueva especificación de JavaScript:

var lowerBound = new Date(Date.parse("@Model.LowerBound.ToUniversalTime().ToString("s")"));

Aquí hay una opción usando jQuery: (estoy seguro de que hay una manera de agregar el tiempo aquí)

var lowerBound = $.datepicker.parseDate(''yy-mm-dd'', "@Model.LowerBound.ToString("yyyy-MM-dd")");

Cuando analizo un DateTime a json en .Net, devuelve una cadena (es decir, "//Date(1249335194272)//" ). ¿Cómo puedo hacer que devuelva un js El constructor del objeto Date no se ajusta en una cadena?

// js server code var dteNow = <%= jsonDateNow %>; // js rendered code var dteNow = "//Date(1249335477787)//"; // C# using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.UI; using System.Web.Script.Serialization; using System.Web.UI.WebControls; namespace testing{ public partial class iTaxPrep : System.Web.UI.Page { protected string jsonDateNow; protected void Page_Load(object sender, EventArgs e) { if (!IsPostBack) { jsonDateNow = new JavaScriptSerializer().Serialize(DateTime.Now); } } } }


Con un poco de manipulación de cadenas y una evaluación, puede crear un objeto Date

var dteNow = "//Date(1249335477787)//"; var dteObj = eval("new " + dteNow.replace(////g,""));


Esta es una limitación conocida con JSON. Esta respuesta puede ayudarte, específicamente:

value = new Date(parseInt(value.replace("/Date(", "").replace(")/",""), 10));


Este ejemplo funciona

JavaScriptSerializer serializer = new JavaScriptSerializer(); DateTime dt = DateTime.Now; DateTime dt1 = dt; string jsonDateNow = serializer.Serialize(dt1);


Esto parece funcionar (Gracias Chris S por la idea). En C #, reemplace para eliminar el envoltorio de cadena de todo el objeto de fecha;

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(")////"", ")"); } } } }

..y después de eliminar las comillas y agregar el nuevo prefijo a Date, este js ahora funciona. ¡Hurra!

testCase= <%= jsonESHACase %>; if (testCase) { document.write(testCase["ClosingDate"].format("MM dd yyyy")); }



Limpieza de cadenas un poco más simple con RegEx ...

var myDate = "/ / Date (1508821200000) /";
var jsDate = new Date (parseInt (myDate.replace (/ / D / g, '''')));


Manipulación simple de javascript como esta:

function(param){ var date = new Date(parseInt(param.substr(6))); return date; }

Pase la fecha JSON como parámetro a la función y devolverá una fecha de javascript.


Puedes intentar esto:

"MyField: " + string.Format("(function(y,m,d,h,mm,s){{var d=new Date(Date.UTC(y,m-1,d,h,mm,s));return d;}})({0},{1},{2},{3},{4},{5})", d.Year, d.Month, d.Day, d.Hour, d.Minute, d.Second);

Esto parece funcionar en FF e IE.



jsonDateNow = String.Format("Date({0},{1},{2})", Date().Now.getYear(), Date().Now.getMonth() -1, Date().Now.getDay());