Java-获取给定两周和当前两周之间的差异

Java-获取给定两周和当前两周之间的差异,java,date,calendar,Java,Date,Calendar,例如: 提供的数据: 2010年, 第二个月, 两周-1 当前日期 如何计算两个给定日期之间的两周数差异 这就是我想出来的,而且效果很好 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

例如:
提供的数据:

  • 2010年, 第二个月, 两周-1

  • 当前日期
  • 如何计算两个给定日期之间的两周数差异


    这就是我想出来的,而且效果很好

    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
    
    Calendar c=Calendar.getInstance();
    国际年=2011年;
    整月=6;
    int两周=1;
    整数月=(日历年)-年)*12;
    noofmonths=(noofmonths+((12-(第1个月)+(c.get(日历月)-12))-1)*2;
    
    int nooffortnights=noofmonths+((2-(fortnight-1)+)((c.get(Calendar.DAY\u OF_MONTH)这取决于你对两周的定义。如果我们是字面意思,那么两周被定义为14天,因此计算天数并除以14,工作完成

    我怀疑,在您的案例中,我们实际上使用的是一个特殊的业务日历,其中两周是季度的一部分,因此存在一些特殊情况-一年不完全分为两周,也许业务年度不从1月1日开始?因此,在某个地方会有一个明确的ea开始日期列表一年两周

    让我们假设两周的定义

     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日?我不知道你会期待什么答案


    因此,首先,要弄清楚业务需求是什么。我会感到惊讶的是,你会发现现成的日期包可以理解两周,但即使你这样做了,你也需要非常仔细地检查它们是否给出了你需要的答案。

    假设你想在没有任何第三方库的情况下这样做

    制作2个
    Calendar
    对象(都带有给定的日期)


    请注意,这是一个粗略的近似值。

    这是什么数据类型?你自己制作了日期类?你如何计算两周?每年?每月?它们总是从一年或一个月的第一天开始吗?它们总是14天吗?你好!我知道这是7年前的事,与我目前想要实现的目标仍然相关!!请问,这些是什么为了得到两周的时间,您需要增加多少个成员?另外,是否可以在Java8中完成这项工作,而不是像当年那样使用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