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

如何使用Java的Joda API仅在几个月内计算差异

颛孙建业
2023-03-14
问题内容

我正在编写一个程序,该程序应该只计算两个给定日期之间的月份,并将值返回给该程序。例如,如果我必须计算4月1日至6月30日之间的月数(这是一个季度,即3个月),则我使用以下代码:

    DateTime start = new DateTime().withDate(2011, 4, 1);
    DateTime end = new DateTime().withDate(2011, 6, 30);

    Months mt = Months.monthsBetween(start, end);
    int monthDiff = mt.getMonths();

使用此方法,我仍然将“ 2”作为月份数,而实际上是“
3”个月。这是我想要的一个例子。我只计算月份数(即从开始月份的第一天到结束月份的最后一个日期),并且不需要其他分析,例如天数,周数,小时数等。如何实现此目的?

任何帮助,将不胜感激。


问题答案:
DateTime start = new DateTime().withDate(2011, 4, 1);
DateTime end = new DateTime().withDate(2011, 6, 30);
Period p = new Period(start, end, PeriodType.months().withDaysRemoved());
int months = p.getMonths() + 1;

您需要withDaysRemoved()零件来确保将月份数加1。否则,两个日期(例如2011-04-15和)2011-06-14仍然会导致答案为2



 类似资料:
  • 问题内容: 我正在尝试计算“一年的几周”中两个日期之间的差异。我可以获取datetime对象,并获取天数等,但不能获取周数。我当然不能减去日期,因为不能保证周末。 我尝试使用减法获取星期数,但问题是返回第1周(这是正确的),但这意味着我的逻辑无法跨越该日期。 供参考,这是我的完整代码: 使用此代码,2012年12月31日的演讲最终为-35。 问题答案: 如何计算各个日期的几周之内的 星期一 之间的

  • 问题内容: 我在这里很新,目前正在尝试使用Java计算标准偏差(我已经用谷歌搜索了哈哈),但是在使其正常工作方面存在很多问题 我有一个由用户输入的十个值,然后我必须计算到目前为止我所理解的标准偏差,这要归功于已经回答过的人们,我找到了数组的均值然后完成了计算 我已经将数据存储在10个值的数组中,但是我不太确定如何从数组中打印数据,然后进行计算而不必将输入代码存储在这里数据中,而这些数据我已经处理过

  • 问题内容: 我在Scala中使用Java的类,想比较一个对象和当前时间。我知道我可以使用getTime()计算增量: 但是,这仅代表我几毫秒。有没有更简单,更好的方法来获取时间增量? 问题答案: 不幸的是,JDK API严重损坏。我建议使用Joda时间库。 Joda Time具有时间间隔的概念: 编辑:顺便说一句,乔达有两个概念:用于表示两个时刻之间的时间间隔(表示上午8点至上午10点之间的时间)

  • 问题内容: 我想从19:00:00中减去两个时间段,例如16:00:00。是否有任何Java函数?结果可以是毫秒,秒或分钟。 问题答案: 差异以毫秒为单位。

  • 问题内容: 如果用户输入为2255,而我的输出应为10分钟,那么我如何计算24小时内的时差。我的想法是将输入分为2个部分,2位数字和2位数字。前2位数字是小时,将其乘以60使其变为分钟。然后再加上第二个2位数字,然后计算出差异。我不想使用任何日期日历数据类型或API来解决它。谢谢 问题答案: 如何在不使用String chartAt的情况下获取前两位数字。 最高两位数:数字/ 100最低两位数:数

  • 问题内容: 请包括nanos,否则将是无关紧要的: [编辑]我想要最精确的结果,所以不要双打;仅整数/长算术。同样,结果必须是肯定的。伪代码: 例子: 是的,在java.sql.Timestamp中毫秒被复制的时间和毫微秒不相上下,所以1001个毫秒装置1秒(1000)和1毫这是在部件和部分,因为1毫秒= 1000000毫微秒)。这比看起来要狡猾得多。 我建议不要在未实际测试代码或未准备好工作代码