52

次の関数を使用しました。

function datediff()
{
  var dat1 = document.getElementById('date1').value;
  alert(dat1);//i get 2010-04-01
  var dat2 = document.getElementById('date2').value;
  alert(dat2);// i get 2010-04-13
 
  var oneDay = 24*60*60*1000;   // hours*minutes*seconds*milliseconds
  var diffDays = Math.abs((dat1.getTime() - dat2.getTime())/(oneDay));
  alert(diffDays);
}

エラーが発生します:

dat1.getTime()` is not a function
4

5 に答える 5

62

これは、変数dat1dat2変数が単なる文字列であるためです。

それらを解析してDateオブジェクトを取得する必要があります。その形式では、常に次の関数を使用します。

// parse a date in yyyy-mm-dd format
function parseDate(input) {
  var parts = input.match(/(\d+)/g);
  // new Date(year, month [, date [, hours[, minutes[, seconds[, ms]]]]])
  return new Date(parts[0], parts[1]-1, parts[2]); // months are 0-based
}

Date.parse(string)(or new Date(string)) メソッドは実装に依存するため、この関数を使用します。また、yyyy-MM-dd形式は最新のブラウザーでは機能しますが、IE では機能しないため、手動で行うことを好みます。

于 2010-04-13T07:15:43.077 に答える
11

この関数/メソッドを使用するには、クラスDateのインスタンスが必要です。

このメソッドは、常にDateオブジェクトと組み合わせて使用​​されます。

以下のコードを参照してください。

var d = new Date();
d.getTime();

リンク : http://www.w3schools.com/jsref/jsref_getTime.asp

于 2010-04-13T07:14:08.540 に答える
5

dat1 と dat2 は JavaScript の文字列です。String プロトタイプには getTime 関数はありません。Date.parse() 関数が必要だと思います: http://www.w3schools.com/jsref/jsref_parse.asp

次のように使用します。

var date = Date.parse(dat1);
于 2010-04-13T07:15:59.317 に答える