9

この関数を使用して、JSで残りの時間(例:今日(2014/03/02)から10年2か月と10日)を計算しようとしています:

var d2 = new Date(2024, 3, 12);
var d1 = new Date();
var d0 = new Date(1970, 0, 1);

var diff = new Date(d2.getTime() - (d1.getTime() + d0.getTime() ) );
var years = diff.getFullYear();
var months = diff.getMonth();
var days = diff.getDay();

alert("remaining time = " + years + " years, " + months + " months, " + days + " days.");

しかし、10 年の差を取得する代わりに、1980 年の差を取得しました (ただし、作成された日の差は、月と年の日数の変動を購入します):

ここに画像の説明を入力

この戦略を使用して、この「残り時間」操作を実行することは可能ですか? もしそうなら、期待される結果を得るにはどうすればよいですか?

JS シェルの関数: jsfiddle.net/3ra6c/

4

3 に答える 3

4

説明したように、 にDateはそのような機能が搭載されておらず、自分で計算する必要があります。2 つの日付のミリ秒単位の差を取得できますが、それを表すために計算を行う必要があります。

moment.jsをロードしrequire.jsた を人間化された近似で使用する例。

Javascript

require.config({
    paths: {
        moment: 'http://momentjs.com/downloads/moment.min'
    }
});

require(['moment'], function (moment) {
    var x = moment(new Date(2024, 3, 12)).from(new Date());

    console.log(x);
});

出力

in 10 years

jsFiddleについて

彼らのドキュメントを見て、出力を人間味のあるものにする方法を確認してください。もう少し詳細が必要な場合があります。

于 2014-03-02T18:04:49.167 に答える