2017-08-02 61 views
-2

我一直試圖通過基於存儲在數據庫中的天數來計算軟件包少於365的情況下,在幾年或幾個月或僅僅幾個月內獲得有效性。需要根據天數得到年份和月份

我所做的是以天爲單位存儲了一個包的有效性計數。例如。 1680或365.

我需要分別顯示5年和1年x月。

我一直計算1個月爲28天。

有人可以幫助我嗎?我試了一下:

if (days_count > 336) { 
    year = count/28*12; // here i will get the year.how will i get Month 
} else { 
    // calculate for month and days 
    month = count/28; 
} 
+1

PHP或JavaScript? – user10089632

+1

請說明解決方案應該在javascript,php還是兩者都有。 – briosheje

+0

僅供參考,並非所有年份都有365天... – deceze

回答

0
$count = 1710; 
$totalMonth = (int) ($count/28) ; // 5 
echo $year = (int) ($totalMonth/12);// 1 
echo $month = $totalMonth % 12; 
+0

謝謝,這也適用。 – Shailang

0

要回答你的問題,這是對你的代碼註釋,你應該使用MOD運營商和/運營商的組合來得到月份數。

year = count/(28 * 12); 
month = (count % (28 *12))/28; 

這應該會給你正確的年份和月份數,但是使用28作爲月份總和似乎有點奇怪。 還要確保你使用28 * 12左右的parantheses,否則你的編譯器或解釋器混合操作的優先級。

+0

是的,有點作弊 – Shailang

0

我相信,這是你在找什麼:

function convertNumberOfDaysToMonthYear(numberOfDays) { 
 
    var str = ''; 
 

 
    var values = [ 
 
    [' year', 365], 
 
    [' month', 28], 
 
    [' day', 1] 
 
    ]; 
 

 
    for (var i = 0; i < values.length; i++) { 
 
    var amount = Math.floor(numberOfDays/values[i][1]); 
 
    if (amount >= 1) { 
 
     str += amount + values[i][0] + (amount > 1 ? 's' : '') + ' '; 
 
     numberOfDays -= amount * values[i][1]; 
 
    } 
 
    } 
 

 
    return str; 
 
} 
 

 
console.log(convertNumberOfDaysToMonthYear(367)); 
 
console.log(convertNumberOfDaysToMonthYear(730)); 
 
console.log(convertNumberOfDaysToMonthYear(1000));

+0

這正是我非常感謝的。 – Shailang

+0

不客氣!快樂編碼! :) –