当前位置: 首页 > 面试题库 >

计算乔达时间的月差

常业
2023-03-14
问题内容

在代码的第四行(忽略空格和注释),然后我计算两个日期之间的月份差。这行得通,但看起来有些古怪。有没有更好的办法?

int handleAllowance(LocalDate today) {

    int allowance = membership.allowance();
    if (allowance == 0) return 0;

    // if update was last month (or earlier)
    int months = today.monthOfYear().getMaximumValue() - today.monthOfYear().getMinimumValue(); // yeah, 12, but just to be 100% correct :-)
    int curMonth = (today.getYear()               * months) + today.              getMonthOfYear();
    int updMonth = (lastAllowanceUpdate.getYear() * months) + lastAllowanceUpdate.getMonthOfYear();
    if (curMonth > updMonth) {

        // ...and if today is on or past update day
        int updateDay = Math.min(allowanceDay, today.dayOfMonth().getMaximumValue());
        if (today.getDayOfMonth() >= updateDay) {

            // number of months to give allowance (in the rare case this process fails to run for 2 months or more)
            int allowanceMonths = curMonth - updMonth;

            // give credits
            final int totalAllowance = allowance * allowanceMonths;
            giveCredits(totalAllowance);

            // update day
            lastAllowanceUpdate = lastAllowanceUpdate.plusMonths(allowanceMonths);

            // return the allowance given
            return totalAllowance;

        }

    }

    return 0;
}

问题答案:
Months.monthsBetween(
     start.withDayOfMonth(1),
     end.withDayOfMonth(1)).getMonths()


 类似资料:
  • 问题内容: 我正在构建一个使用时间的应用程序。我决定用乔达时间。我正在尝试将joda时间添加到我的应用中。我没有将文件添加到库的经验。我遵循了这些步骤(请参阅底部),所以我想。我的项目没有显示任何错误,但是当我运行一个简单的测试时:我被强制关闭,并出现以下错误: 这些是我遵循的步骤: 在eclipse中创建您的android项目。 下载Joda时间 在Eclipse中,在Package Explo

  • 问题内容: 我想计算事件的 结束日期 (和时间)。我知道 开始日期 和 持续时间 (以分钟为单位)。但: 我不得不跳过假期-非经常性情况 我必须跳过周末-经常性的情况 我 不必 计算工作时间(例如:从8:00 am到5:00 pm)-经常出现的情况,但粒度要细一些 是否有使用Joda时间库实现这些情况的简单方法? 问题答案: Jodatime将为您提供帮助-我要说很多-但您需要自己编写逻辑,一个循

  • 问题内容: 他们幸福地结婚了吗? 我正在使用最新版本的hibernate(4)和1.3版的joda-time hibernate支持,我也相信这是当前的最新版本。 使用注释时,一切似乎都正常(按预期方式创建了日期列): 一起使用这些版本是否存在任何已知问题? Update Well证明已创建列,但无法填充任何数据: 处理程序处理失败; 嵌套异常是java.lang.AbstractMethodEr

  • 问题内容: 无论如何,是否可以验证给定日期(yyyy-MM- dd)是否为有效日期?它也应该处理leap年。例如(2015-02-29)应该无效。我将日期作为字符串检索,并将其放入joda DateTime对象。 问题答案: 我认为,这应该对您有用(如果您想保持简单)。 你必须做一个。

  • 我在计算两次约会的时差。。 上面的方法很有效,但它可以提供几天、几小时和几秒钟的时间。我希望它也能告诉我月份。但问题是每个月都有不同的天数,所以我如何才能找到月数呢?

  • 问题内容: 我正在使用Joda Time 2.1库。 我已经编写了一种比较给定日期是否在日期范围之间的方法。我希望它包含开始日期和结束日期。我已经习惯了,因为我不想考虑时间部分仅是日期部分。 下面是它的代码。 上面方法的输出是: 我的问题是错误的,即使日期和具有相同的值。 我想要那个,但这里只考虑。 我希望它具有包容性。 这是否意味着该方法专门找到一个匹配项? 我在Joda Time中浏览了Jav