我似乎不明白。

我有几天,比如说762。

分别为2年(每365天730天),1个月(762-730)和2天(假设每个月有30天不变)

我需要在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);


好吧,它不起作用。

最佳答案

使用您对年/月长度的假设;

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 */]


请注意,这次的天数有所不同,因为一月为31天。

关于javascript - 获取年月月日,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/18474706/

10-10 00:18