【问题标题】:Compare date with jodatime将日期与 jodatime 进行比较
【发布时间】:2012-04-21 19:28:31
【问题描述】:

我尝试将某个日期与 jodaTime 进行比较,我使用周和年来比较日期

DateMidnight endDate01 = new DateMidnight().withYear(2012).withWeekyear(37);
DateMidnight endDate02 = new DateMidnight().withYear(2012).withWeekyear(38);


endDate01.isBefore(endDate02); //return false

我不明白为什么 endDate01 看起来比 endDate02 大。

可能是一个错误?

DateMidnight endDate01 = new DateMidnight();

endDate01.withYearOfEra(o1.getEndYearPeriod());
endDate01.withWeekOfWeekyear(o1.getEndWeekPeriod());

System.out.println(o1.getEndWeekPeriod() + " " + o1.getEndYearPeriod());
System.out.println(endDate01.getWeekOfWeekyear() + " " + endDate01.getYearOfEra());

我明白了

37 2012

2012 年 16 月

应该得到相同的结果,不是吗?

【问题讨论】:

  • 可能是因为 endDate02 在 endDate01 之后的一小段时间内被实例化了?
  • 奇怪,同样的代码在我的机器上返回true?

标签: java datetime jodatime


【解决方案1】:

这两个代码都可以正常工作

DateTime dt = new DateTime(); 
dt = dt.withWeekOfWeekyear(29); 
dt = dt.withWeekyear(2011);

DateMidnight dt2 = new DateMidnight().withWeekOfWeekyear(29).withYear(2011);

【讨论】:

    【解决方案2】:

    withWeekyearwithWeekOfWeekyear 不同。我不是 100% 确定 withWeekyear 会做什么,我认为如果您的意思是 2012 年的第 37 周,您应该使用 withWeekOfWeekyear 代替。

    【讨论】:

      【解决方案3】:
      DateTime firstDate = new DateTime();
      firstDate.withWeekyear(2012) /* represents the 2012 with number of weeks in it (I thing the algorith is the difference between first week in 1970) */
      firstDate.withWeekOfWeekyear(29) /* now you have the 29th week of 2012 */
      firstDate.withDayOfWeek(1) /* now you have 29th week of 2012 and Monday */
      

      现在你设置日期!以这种方式设置第二个并比较它们。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2017-10-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-01-16
        • 2015-01-27
        相关资源
        最近更新 更多