将数字转换为数年和数月的最简单方法

时间:2012-04-17 09:03:53

标签: javascript

我有一个生成数字的脚本并将其设置为文本框。例如,如果数字为6.3,我希望能够将其转换为6年4个月。

有快速的方法吗?

5 个答案:

答案 0 :(得分:1)

var n = 6.3;
var y = Math.floor(n);            // whole years
var m = Math.floor(12 * (n - y)); // treat remainder as fraction of a year

我注意到这个月给出3,而不是4.为什么你认为6.3应该给4个月? 6年零4个月是6.333333年。

答案 1 :(得分:1)

我真的不确定你是想要从你的输入创建一个日期/数字,还是只是拆分数字并创建一个字符串?我去了第二个!

var number = 6.3;
var splitstring = number.toString().split('.');
var years = splitstring[0];
var months = splitstring[1];
alert(years + ' years,' + months + ' months');​

Working example here

答案 2 :(得分:0)

function getDescription(str)
{
    var description = "";
    var years = 0;
    var months = 0;
    var splits = str.split('.');
    if(splits.length >= 1)
    {
       years = parseInt(splits[0]);
    }
    if(splits.length >= 2)
    {
       months = parseInt(splits[1]);
    }
    return years + ' years' + ' ' + months + ' months';
}

打电话
getDescription('6.3');

getDescription(document.getElementById('my_textbox').value);

答案 3 :(得分:0)

var num = 8.62;
console.log("%d year/s and %d month/s", ~~num, ~~((num - ~~num)*12)); 
/* 8 year/s and 7 month/s */

答案 4 :(得分:0)

var n = 6.3
var years = Math.floor(n);
var months = Math.round((n * 12) % 12);

%表示模数,它返回除法的余数,而舍入则将数字舍入到最接近的整数。

因此...

  • Math.floor(6.3)将返回6年
  • (6.3 * 12)%12将返回3.6个月
  • round(3.6)将返回4个月,这就解释了为什么6.3 年是6年零4个月