需要根据天数获得年份和月份

时间:2017-08-02 10:06:40

标签: javascript

根据存储在数据库中的天数,我一直试图在数年内和数月内获得有效期,或者仅在少于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;
}

3 个答案:

答案 0 :(得分:0)

要回答您对代码发表评论的问题,您应该使用mod运算符和/运算符的组合来获取月份数。

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

这应该给你正确的年份和月份数,但是使用28作为月份的总和似乎有点奇怪。 还要确保你使用28 * 12左右的parantheses,否则你的编译器或解释器会混淆操作的优先级。

答案 1 :(得分:0)

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

答案 2 :(得分: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));