2012-04-20 119 views
0

我试图比较一些日期jodaTime,我用一周和今年比较日期比较日期与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()); 

我得到

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

+1

也许是因为endDate02在endDate01之后的短时间内被实例化? – Hassan 2012-04-20 20:06:18

+0

奇怪,相同的代码在我的机器中返回true? – SelimOber 2012-04-20 20:18:12

回答

1

这些代码都做工精细

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

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

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

0
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 */ 

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