J'ai une fonction en Javascript qui reçoit un DateTime C # de MVC. Si la date est nulle, elle devrait renvoyer "-", si c'est une date valide, elle devrait renvoyer la date formatée.
IMPORTANT: Il n'est pas possible d'envoyer la date dans un autre format à partir de 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();
}
Existe-t-il un meilleur moyen de comparer si la date est la date & heure nouvelle C #?
Et comment puis-je analyser et renvoyer la date au format "aaaa/mm/jj"?
Étant donné le résultat avec lequel vous êtes coincé, je ne vois pas de meilleur moyen d'attraper un DateTime
de 0 du côté javascript.
Date.parse
Devrait fonctionner pour vos besoins en analyse, mais il renvoie le nombre de millisecondes. Vous devez donc envelopper un constructeur Date autour de celui-ci:
var date = new Date(Date.parse(myCSharpString));
Pour la date de retour, vous voulez simplement
date.getFullYear() + "/" + (date.getMonth() + 1) + "/" + (date.getDate() + 1);
(date.getMonth
Et date.getDate
Sont indexés sur 0 au lieu de 1.)
Violon: http://jsfiddle.net/GyC3t/
[~ # ~] modifier [~ # ~] Merci à JoeB, laissez-moi faire une correction. La fonction date.getMonth()
est indexée sur 0, mais la fonction date.getDate()
est indexée sur 1. Le violon "travaillait" avec le +1 car date.getMonth fonctionnait à l'heure locale, qui est antérieure à UTC. Je n'ai pas vérifié correctement la documentation, et j'ai simplement ajouté 1, et cela a fonctionné avec le violon.
Une façon plus appropriée de faire ceci est:
Pour la date de retour, vous voulez simplement
date.getFullYear() + "/" + (date.getMonth() + 1) + "/" + (date.getUTCDate());
(date.getMonth
Est indexé sur 0 tandis que date.getDate
Est indexé sur 1 mais sensible aux différences de fuseau horaire.)
Violon: http://jsfiddle.net/GyC3t/25/
J'utilise ce qui suit pour passer une date Javascript en C #:
var now = new Date();
var date = (now.getTime() / 86400000) - (now.getTimezoneOffset() / 1440) + 25569;
Donc, si vous obtenez le nombre de millisecondes de C #, cela devrait ressembler à ceci:
var csharpmilliseconds;
var now = new Date();
var date = new Date((csharpmilliseconds + (now.getTimezoneOffset() / 1440) - 25569) * 86400000);