2014-09-02 2 views
1

Я хочу найти дату первого появления воскресенья до указанной даты.найти первое появление воскресенья с данной даты

например. У меня есть метод, который за исключением текущей даты и позволяет сказать, что дата - сегодняшняя дата Вторник 02-09-2014, и метод вернет дату прошедшего воскресенья 31-08-2014.

Есть ли способ, которым я могу это сделать на Java?

Заранее спасибо

+1

http://joda-time.sourceforge.net/apidocs/org/joda/time/DateTime.html#dayOfWeek() – StackFlowed

+0

У этого есть upvote? Как именно, что этот вопрос «показывает исследовательские усилия»? – csmckelvey

ответ

1

С Java 8 вы можете использовать один из встроенных в TemporalAdjusters:

LocalDate today = LocalDate.now(); 
LocalDate previousSunday = today.with(previous(SUNDAY)); 
//or if today is a Sunday and you want to return today: 
LocalDate previousSunday = today.with(previousOrSame(SUNDAY)); 

Примечание: предполагается, статичные импорт:
import static java.time.DayOfWeek.SUNDAY;
import static java.time.temporal.TemporalAdjusters.previous;

0

Попробуйте следующее:

Calendar cal = Calendar.getInstance(); 
cal.add(Calendar.DAY_OF_WEEK, -(cal.get(Calendar.DAY_OF_WEEK) - 1)); 
System.out.println(cal.getTime()); 
0

Нечто подобное будет работать.

Calendar cal = Calendar.getInstance(); 
int diff = cal.get(Calendar.DAY_OF_WEEK) - Calendar.SUNDAY; 
cal.add(Calendar.DAY_OF_MONTH, -diff); 
System.out.println(cal.getTime()); 
0

Использование java.util.Calendar

вычитать разницу (в днях) между воскресеньем и теперь:

Calendar c = Calendar.getInstance(); 
int day = c.get(Calendar.DAY_OF_WEEK); 
c.add(Calendar.DAY_OF_WEEK, Calendar.SUNDAY - day); 

И вы получили.

Смежные вопросы