Получение определенного диапазона дат - PullRequest
0 голосов
/ 31 марта 2011

Мне нужно получить диапазон дат, начиная с прошлой среды до вчерашнего дня. Эта программа запускается каждую среду. Это хороший способ сделать это? Что если по какой-то причине программа будет запущена во вторник? Как мне заставить это работать? Спасибо.

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 ]

2 голосов
/ 31 марта 2011

Я бы использовал значение 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();
2 голосов
/ 31 марта 2011

Возможно, вы захотите взглянуть на функцию Интервал в Joda-Time. Если вам нужно использовать даты в Java, вам нужно просто прикусить пулю и изучить Joda-Time сейчас. Это избавит вас от головной боли.

...