我使用以下截图查找Joda中几个时间段的开始和结束。我左肩上的小恶魔说这是要走的路......但我不相信他。查找开始和结束的年/月/日/小时
有没有人有一些joda的经验做一个简要的检查,并告诉我,这个小家伙是正确的?
(将仅用于UTC datetime对象)
谢谢!
/* Year */
private static DateTime endOfYear(DateTime dateTime) {
return endOfDay(dateTime).withMonthOfYear(12).withDayOfMonth(31);
}
private static DateTime beginningOfYear(DateTime dateTime) {
return beginningOfMonth(dateTime).withMonthOfYear(1);
}
/* Month */
private static DateTime endOfMonth(DateTime dateTime) {
return endOfDay(dateTime).withDayOfMonth(dateTime.dayOfMonth().getMaximumValue());
}
private static DateTime beginningOfMonth(DateTime dateTime) {
return beginningOfday(dateTime).withDayOfMonth(1);
}
/* Day */
private static DateTime endOfDay(DateTime dateTime) {
return endOfHour(dateTime).withHourOfDay(23);
}
private static DateTime beginningOfday(DateTime dateTime) {
return beginningOfHour(dateTime).withHourOfDay(0);
}
/* Hour */
private static DateTime beginningOfHour(DateTime dateTime) {
return dateTime.withMillisOfSecond(0).withSecondOfMinute(0).withMinuteOfHour(0);
}
private static DateTime endOfHour(DateTime dateTime) {
return dateTime.withMillisOfSecond(999).withSecondOfMinute(59).withMinuteOfHour(59);
}
你有没有试过编写jUnit测试? – 2010-03-22 17:27:24
我正在寻找比这更简单的方式,它对我来说看起来有点尴尬。但它的作品,即使在一些角落的情况下。 – reto 2010-03-22 17:42:18
我认为你需要扭转endOfYear的操作。它看起来像2/2/10会给你一个12/28/10的日期。从XP/TDD的角度来看,你是否需要所有这些开始/结束方法?如果您只需要一年和一年的开始和结束时间,那就实现这一点。如果您以后发现需要日日时间,可以添加它们。最有可能的是,你不会全部需要它们。而较少的代码意味着缺少隐藏的地方。 – 2010-03-22 18:12:10