2017-09-06 5 views
1

次の日に取得して「yyyy-MM-dd HH:mm」形式にしたいのですが、これをChromeのコンソールで実行するとUncaught TypeError:date.getHoursなぜ関数ではないのですか? nextDay変数は、明らかにDateのインスタンスです。なぜこのコードにUncaught TypeErrorがあるのですか

しかし、私は時と分を削除したばかりで、年月日を保ちましたが、それは成功しました。

var time = new Date().getTime(); 
var interval = 24 * 60 * 60 * 1000; 
var nextDay = new Date(time + interval); 

function padding(number) { 
    return number < 10 ? "0" + number : "" + number; 
} 
function format(date) { 
    var year = date.getFullYear(), 
     month = date.getMonth(), 
     date = date.getDate(), 
     hour = date.getHours(), 
     minute = date.getMinutes(); 

    return padding(year) + "-" 
     + padding(month + 1) + "-" 
     + padding(date) + " " 
     + padding(hour) + ":" 
     + padding(minute); 
} 
console.log(format(nextDay)); 

答えて

2

この関数は "date"という名前のパラメータを受け取り、 "date"という名前のローカル変数を宣言しようとします。その宣言は無視され、イニシャライザはパラメータの値を上書きします。

変更したパラメータの名前:

function format(d) { 
    var year = d.getFullYear(), 
     month = d.getMonth(), 
     date = d.getDate(), 
     hour = d.getHours(), 
     minute = d.getMinutes(); 

    return padding(year) + "-" 
     + padding(month + 1) + "-" 
     + padding(date) + " " 
     + padding(hour) + ":" 
     + padding(minute); 
} 
+0

ああ、それはひどい間違いです、ありがとうございます。 –

1

あなたは、パラメータと同じ変数名を使用している、dateは2回使用され、ダウン以下のような変数名を変更します。

var time = new Date().getTime(); 
var interval = 24 * 60 * 60 * 1000; 
var nextDay = new Date(time + interval); 

function padding(number) { 
    return number < 10 ? "0" + number : "" + number; 
} 
function format(date) { 
    var year = date.getFullYear(), 
     month = date.getMonth(), 
     theDate = date.getDate(), //change the variable name 
     hour = date.getHours(), 
     minute = date.getMinutes(); 

    return padding(year) + "-" 
     + padding(month + 1) + "-" 
     + padding(date) + " " 
     + padding(hour) + ":" 
     + padding(minute); 
} 
console.log(format(nextDay)); 
関連する問題