Я бы использовал значение 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();