例如:
数据给出:
如何在两个给定日期之间获得四分之一的差异?
这是我想出来的,它的工作正常......
Calendar c= Calendar.getInstance();
int year = 2011;
int month = 6;
int fortnight = 1;
int noofmonths=(c.get(Calendar.YEAR)-year)*12;
noofmonths=(noofmonths+((12-(month-1)+(c.get(Calendar.MONTH)-12)))-1)*2;
int nooffortnights=noofmonths+((2-(fortnight-1)+((c.get(Calendar.DAY_OF_MONTH)<15?1:2)-2)))-1;
System.out.println("nooffortnights : "+nooffortnights); //outputs 5
答案 0 :(得分:2)
这取决于您对fortnights的定义。如果我们是字面意思,那么两周定义为14天,所以计算天数并除以14,完成工作。
我怀疑在你的情况下,我们实际上正在使用一个特殊的商业日历,其中四分之一是季度的细分,因此有一些特殊情况 - 一年并不完全分为四个星期,也许商业年度没有开始1月1日?所以在某个地方会有一个明确的一年中每两周开始日期的清单。
我们假设两周的定义有
17th Nov - 1st Dec
2nd Dec - 15th Dec
16th Dec - 31st Dec (note this is 15 days long)
现在11月17日到12月16日有多少个星期四的定义是什么?我想2.从11月19日到12月16日?我不知道你会期待什么答案。
首先,要明确了解业务需求。我会感到惊讶的是你会发现现成的日期套餐能够理解四夜,但即使你这样做,也需要仔细检查它们是否能提供你需要的答案。
答案 1 :(得分:0)
假设你想在没有任何第三方库的情况下这样做
制作2个Calendar
个对象(两个都有给定的日期)。
Calendar c1 = Calendar.getInstance(),c2 = Calendar.getInstance();
c1.add(Calendar.MONTH, 2);
int fortnights = (int)((c1.getTimeInMillis() - c2.getTimeInMillis()) / (14L * 24 * 60 * 60 * 1000));
System.out.println(fortnights); //output should be 4
请注意,这是一个粗略的近似值。