2017-08-02 70 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

不客气!快乐编码! :) –