JavaScript を使用して 2 つの日付間の経過時間を特定しようとしています。例: 「2008 年 1 月 5 日の午前 3 時に禁煙しました。禁煙してから何年、何ヶ月、何時間経過しましたか?」.
だから私の考えは次のとおりでした:
- 「終了」日を取得する
- 現在の日付を取得する
- 時間に変換 (ミリ秒)
- 違いを見つける
- 差分を使用して新しい日付を作成する
- その日付から年、月などを抽出します
うーん、おかしな動作をしており、その理由を特定することはできません。洞察はありますか?
//create custom test date
var d1 = new Date(2012, 8, 28, 13, 14, 0, 0);
//create current date
var d2 = new Date();
//get date times (ms)
var d1Time = (d1.getTime());
var d2Time = (d2.getTime());
//calculate the difference in date times
var diff = d2 - d1;
//create a new date using the time differences (starts at Jan 1, 1970)
var dDiff = new Date();
dDiff.setTime(diff);
//chop off 1970 and get year, month, day, and hour
var years = dDiff.getFullYear() - 1970;
var months = dDiff.getMonth();
var days = dDiff.getDate();
var hours = dDiff.getHours();
この一時的なホストで実際に動作しているのを見ることができます。