【发布时间】:2014-06-17 21:33:28
【问题描述】:
我想获取 Java 中两个日期范围之间的周数和月数。例如, 开始日期:03/01/2012 结束日期:03/05/2012
由于这两个日期在两个不同的周内,我希望结果为 2 而不是 0。
问题的第二部分是: 开始日期:2012 年 2 月 29 日 结束日期:03/01/2012
中间的月数应为 2。
我一直在网上搜索这方面的内容,很多人建议在 Java 中使用 Joda Date 时间。所以我试了一下。我能够让几周的工作,但我不确定这是否是正确的方法。这是我为获得一周持续时间所做的工作:
DateTime s = new DateTime(Long.parseLong("1330573027000")); // 2012-02-29
DateTime e = new DateTime(Long.parseLong("1331005027000")); // 2012-03-05
Weeks weeks = Weeks.weeksBetween(s, e).plus(1);
这返回 1,而我期待 2,因为两个日期在不同的周。
对于几个月的持续时间,我尝试遵循相同的方法,但它返回 0,但我希望它返回 2,因为这两个日期位于两个不同的月份。
有人可以指点我正确的方向吗?
谢谢!
编辑: 我想我有一种方法,如果看起来正确,请告诉我:
DateTime start = new DateTime(Long.parseLong("1330659427000"));
DateTime start = new DateTime(Long.parseLong("1331005027000"));
DateTime finalStart = start.dayOfWeek().withMinimumValue();
DateTime finalEnd = end.dayOfWeek().withMaximumValue();
然后得到finalStart和finalEnd的区别。这看起来正确吗?
编辑2 更新结束时间
【问题讨论】:
-
两个不同的星期?如果日期是
2012-02-29和2012-12-29,满足两个不同的星期怎么办?你也在看 answer=2 吗? -
不,在您列出的方案中,它应该计算两个日期范围之间的周数。所以我基本上想要做的是获取开始日期一周的第一天和结束日期一周的最后一天之间的持续时间。这样我会得到 2 而不是两个日期之间的持续时间。
-
在您的示例中,周不在两个不同的周内,
2012-02-29和2012-03-01属于同一周!你的要求不清楚! -
>在您列出的场景中,它应该计算两个日期范围之间的周数。那么试试这个,`Weeks weeks = Weeks.weeksBetween(new DateTime().withDate(2012, 02, 29), new DateTime().withDate(2012, 12, 29));
-
是的,糟糕的是我已经在 OP 中更新了结束时间。