web-dev-qa-db-ja.com

date.toLocaleDateStringは関数ではありません

エラーを返す単純な関数があります:

エラー:date.toLocaleDateStringは関数ではありません

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

関数定義:

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

関数は入力としてDateオブジェクトを受け取りますが、Date.parse()を使用してDateに明示的に変換しても、役に立ちません。 Node.js 8.xを使用します。解決策はありますか?

P.S。問題の原因は BotBuilderアーキテクチャ でした。

10

_Date.parse_ は数値を返します。 _new Date_ を探しています。または、timeがすでにDateインスタンスである場合は、time.toLocaleDateString()を使用するだけです(そして、それが関数のすべての呼び出しに含まれていることを確認してください)。

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

Date.parse(time)呼び出しの結果としてNaNを取得している可能性があります。 Date.parse のMDN記事で、時間引数が有効であると思われる場合に受け入れる入力文字列のタイプを確認してください。

単に未定義ではなく、失敗した解析をチェックするようにreturnステートメントを変更することができます。例:

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