1

届かないようです。私は日数を持っています.2年(365日ごとに730日)、1ヶ月(762-730)、2日(毎月一定の30日があると仮定して)となる762と言います。

私はJSでそれを行う必要があります。これは私が思いついたものです:

days = 762;
ymd = {
    d: days % 30,
    m: Math.floor((days - (days % 30)) / 30),
    y: ((days - (days % 365)) / 365),
}
if (ymd.m > 12){
    ymd.y += Math.floor(ymd.m / 12);
    ymd.m =  ymd.m % 12;
}
console.log(ymd);

うまくいきません。

4

2 に答える 2

3

年/月の長さに関する仮定を使用します。

function dToYMD(i) {
    var y, m ,d;
    y = (i / 365) | 0;
    i = i - y * 365;
    m = (i /  30) | 0;
    i = i - m *  30;
    d =  i        | 0;
    return [y, m, d];
}
dToYMD(762); // [2 /* years */, 1 /* month */, 2 /* days */]

何かが組み込まれていると思いました。Date objを使用することを意味しました

これは長さの仮定を使用しませんが、UNIX エポックに基づいて日付を設定し、1970その年からマイナスすることができます。

function dToYMD(i) {
    var d = new Date(i * 864e5);
    return [d.getUTCFullYear() - 1970, d.getUTCMonth(), d.getUTCDate() - 1];
}
dToYMD(762); // [2 /* years */, 1 /* month */, 1 /* days */]

今回は、1 月に日数があるため、日数が異なり31ます。

于 2013-08-27T20:31:47.857 に答える