获取特定日期范围

时间:2011-03-31 17:53:24

标签: java datetime calendar

我需要从上周三到昨天获得一个日期范围。该计划每周三运行。是这样做的好方法吗?如果该程序由于某种原因在星期二运行怎么办?我如何使其工作?感谢。

Calendar calendar = Calendar.getInstance();
calendar.add(Calendar.DAY_OF_MONTH, -7);
Date transactionBeginDate = calendar.getTime();


calendar = Calendar.getInstance();
calendar.add(Calendar.DAY_OF_MONTH, -1);
Date transactionEndDate = calendar.getTime();

2 个答案:

答案 0 :(得分:2)

您可能需要查看Joda-Time的Interval功能。如果你需要在Java中使用日期,你应该咬紧牙关并立即学习Joda-Time。它会为你节省大量的头痛。

答案 1 :(得分:2)

我会在日历上使用DAY_OF_WEEK值。

像...一样的东西。

while(calendar.DAY_OF_WEEK != Calendar.WEDNESDAY){
    calendar.add(Calendar.DAY_OF_MONTH, -1);
}
Date transactionBeginDate = calendar.getTime();

如果你在星期四这样做,你最终会得到同一天的开始和结束日期。你应该能够根据自己的喜好更好地调整它。

修改

如果你想要一整个星期,无论程序何时运行,我想你想从你的结束日期开始,然后开始约会......

Calendar calendar = Calendar.getInstance();
//Find last Wednesday to act as end date
while(calendar.DAY_OF_WEEK != Calendar.WEDNESDAY){
    calendar.add(Calendar.DAY_OF_MONTH, -1);
}
Date transactionEndDate = calendar.getTime();
//Go back one week from that Wednesday to get start date.
calendar.add(Calendar.DAY_OF_MONTH, -7);
Date transactionStartDate = calendar.getTime();