web-dev-qa-db-fra.com

date.toLocaleDateString n'est pas une fonction

Avoir une fonction simple qui renvoie une erreur:

ERREUR: date.toLocaleDateString n'est pas une fonction

TypeError: date.toLocaleDateString is not a function
    at FormatTime (../Src/rootdialog.js:87:58)

Définition de fonction:

function FormatTime(time, prefix = "") {
    var date = Date.parse(time);
    return ((typeof time != "undefined") ? prefix + date.toLocaleDateString()  : "");
}

La fonction reçoit Date objet en entrée, mais même une conversion explicite en Date avec Date.parse() n'aide pas. Utilisation de Node.js 8.x. Toute solution?

P.S. Le problème a été causé par architecture BotBuilder .

10
Aleksey Kontsevich

Date.parse renvoie un nombre. Vous recherchez new Date . Ou, si time est déjà une instance de Date, utilisez simplement time.toLocaleDateString() (et assurez-vous que c'est vraiment dans chaque appel à la fonction)!

function formatTime(time, prefix = "") {
    return typeof time == "object" ? prefix + time.toLocaleDateString() : "";
}
13
Bergi

Vous obtenez très probablement NaN à la suite de votre appel à Date.parse(time). Consultez l'article MDN sur Date.parse pour les types de chaînes d'entrée qu'il accepte si vous pensez que votre argument de temps doit être valide.

Vous souhaiterez peut-être modifier votre déclaration de retour afin qu'elle vérifie les analyses échouées au lieu d'être simplement indéfinies, par exemple:

function FormatTime(time, prefix = "") {
    var date = Date.parse(time); // returns NaN if it can't parse
    return Number.isNaN(date) ? "" : prefix + date.toLocaleDateString();
}
0
Matt McMahon