2012-04-17 83 views
1

我有一個腳本,用於生成一個數字並將其設置爲文本框。例如,如果數字是6.3,我希望能夠將其轉換爲6年4個月。將數字轉換爲年和月的最簡單方法

有沒有快速的方法來做到這一點?

+0

您預期的產量是多少?一個字符串? 2號碼?以及6.3 = 6年和** 4 **月是怎樣的? – ManseUK 2012-04-17 09:09:04

回答

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

我真的不確定你是否想從你的輸入中創建一個日期/數字,或者只是分割數字並創建一個字符串?我去了第二個!

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

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); 
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 */ 
0
var n = 6.3 
var years = Math.floor(n); 
var months = Math.round((n * 12) % 12); 

%意思是模數,它返回除法的其餘部分,while round將數字舍入到最接近的整數。

所以......

  • Math.floor(6.3)將返回6年
  • (6.3 * 12)%12將返回3.6個月
  • 輪(3.6)將返回4個月這解釋了爲什麼6.3 年如6年4個月
相關問題