from - Convertir C#DateTime a Javascript Fecha
send datetime from javascript to c# (2)
Dada la salida con la que estás atascado, no puedo pensar en una mejor manera de capturar un DateTime
de 0 en el lado de javascript.
Date.parse
debería funcionar para sus necesidades de análisis, pero devuelve el número de milisegundos, por lo que necesita envolver un constructor de Fecha alrededor:
var date = new Date(Date.parse(myCSharpString));
Para la fecha de regreso, simplemente quieres
date.getFullYear() + "/" + (date.getMonth() + 1) + "/" + (date.getDate() + 1);
( date.getMonth
y date.getDate
tienen un índice de 0 en lugar de un índice de 1).
Fiddle: http://jsfiddle.net/GyC3t/
EDITAR Gracias a la captura de JoeB, déjame hacer una corrección. La función date.getMonth()
está indexada en 0, pero la función date.getDate()
está indexada en 1. El violín estaba "trabajando" con el +1 porque date.getMonth funciona en la hora local, que es anterior a UTC. No revisé correctamente los documentos, y solo agregué 1, y funcionó con el violín.
Una forma más adecuada de hacer esto es:
Para la fecha de regreso, simplemente quieres
date.getFullYear() + "/" + (date.getMonth() + 1) + "/" + (date.getUTCDate());
( date.getMonth
tiene un índice de 0, mientras que date.getDate
tiene un índice de 1 pero es susceptible a las diferencias de zona horaria).
Fiddle: http://jsfiddle.net/GyC3t/25/
Tengo una función en Javascript que recibe un C # DateTime de MVC. Si la fecha es nula, debe devolver "-", si es una fecha válida, debe devolver la fecha formateada.
IMPORTANTE: no es posible enviar la fecha en otro formato desde C #.
Javascript:
function CheckDate(date) {
if (date == "Mon Jan 01 0001 00:00:00 GMT+0000 (GMT Daylight Time)")
return "-";
else {
var dat = new Date(date);
return dat.getFullYear() + dat.getMonth() + dat.getDay();
}
¿Hay una mejor manera de comparar si la fecha es el C # New DateTime?
¿Y cómo analizo y devuelvo la fecha en formato "aaaa / MM / dd"?
Uso lo siguiente para pasar una fecha de Javascript a C #:
var now = new Date();
var date = (now.getTime() / 86400000) - (now.getTimezoneOffset() / 1440) + 25569;
Entonces, si obtienes la cantidad de milisegundos de C #, debería ser algo como esto:
var csharpmilliseconds;
var now = new Date();
var date = new Date((csharpmilliseconds + (now.getTimezoneOffset() / 1440) - 25569) * 86400000);