1

年/月の HTML コントロールがあります。基になる値は 10 進数として保持されます。例: 15 年 2 か月は「15.02」に相当します。

2年/月のコントロール(足し算/引き算)で計算したい。

基本的な数学計算を行うだけでは機能しません。

  Value1 : 65.00
  Value2 : 47.09
  65.00 - 14.09 = 17.91 

 (is wrong, but should be 17.03 or (64.12 - 47.09))

そのための Javascript/Jquery 関数、または年/月の計算に使用できるライブラリはありますか?

4

6 に答える 6

2

DateJSをご覧ください:http ://code.google.com/p/datejs/wiki/APIDocumentation

于 2012-09-24T07:37:58.020 に答える
0

月の部分を通常の 10 進数に変換し (12 で割ります)、計算を行ってから、小数を月に変換します (12 を掛けます)。

のようなものでビットを解析する必要がありますvar bits = Value1.split(".");。年は月になりbits[0]ますbits[1]

たとえば47.09、 になります47 + (9 / 12 = 0.75) = 47.75

だから65 - 47.75 = 12.25

小数部分を月に戻す: 0.25 * 12 = 0.3. 答えは47.03です。

于 2012-09-24T07:51:22.480 に答える
0

JavaScript は operator overloading をサポートしていないため+、文字どおりおよび-年/月の複合値を使用できるソリューションを見つけることはできないと思います。

ただし、独自の年/月オブジェクト タイプを add メソッドと減算メソッドで定義することもできます。

function YearsMonths(years, months) {
    this.years = years;

    if (months > 11) {
        this.years = this.years += Math.floor(months/12);
        this.months = months % 12;
    }
    else {
        if (months < 0) {
            this.months = 12 + (months % -12);
            this.years -= (Math.floor(months/-12) + 1);
        }
        else {
            this.months = months;
        }
    }
}

YearsMonths.prototype.add = function (otherYearsMonths) {
    newYears = this.years + otherYearsMonths.years;
    newMonths = this.months + otherYearsMonths.months;

    return new YearsMonths(newYears, newMonths);
}

YearsMonths.prototype.subtract = function (otherYearsMonths) {
    var newYears = this.years - otherYearsMonths.years,
        newMonths = this.months - otherYearsMonths.months;

    return new YearsMonths(newYears, newMonths);
}

そして、次のように使用します。

value1 = new YearsMonths(65, 0);
value2 = new YearsMonths(47, 9);

value3 = value1.subtract(value2);
value4 = value1.add(value2);

value3.years;
# 17
value3.months;
# 3

value4.years;
# 112
value4.months;
# 9
于 2012-09-24T08:01:07.617 に答える
0
var a = '65.00'.split('.');
var b = '47.09'.split('.');
a = a[0] * 12 + Number(a[1]);
b = b[0] * 12 + Number(b[1]);
c = a - b;
c = Math.floor(c / 12) + (c % 12) / 100;
于 2012-09-24T08:27:32.490 に答える
0

小数で計算する方法は機能しません。coz、JSはそれを日付ではなく数値と見なします..

年または月 (基本的に任意の時刻/日付システム) を計算するには、適切な構文が必要です。 構文については、これをご覧ください

これがうまくいくことを願っています

于 2012-09-24T07:46:18.837 に答える
0

ここでこれを試すことができます。基本的に、数字が年だけなのか、それとも月が含まれているのかをチェックします。スクリプトは単なるテンプレートです。スクリプトを継続して改善したり、関数を作成したり、独自のプロトタイプを定義したりできます。コードを確認してください。

http://jsfiddle.net/6pRGv/

于 2012-09-24T08:21:14.127 に答える