2013-05-05 4 views
5

Я хочу получать текущие выходные дниПолучение текущих дней недели с датами

Давайте подумаем: сегодня вторник 07.05.2013. Я хочу получить список этих дней с датами

Как я могу это сделать?

Sunday 05.05.2013 
Monday 06.05.2013 
*Tuesday 07.05.2013 
Wednesday 08.05.2013 
Thursday 09.05.2013 
Friday 10.05.2013 
Saturday 11.05.2013 

ответ

15

Этот код будет работать с использованием системы первый день недели, который может отличаться от воскресенья.

Calendar cal = Calendar.getInstance(); 
    cal.set(Calendar.DAY_OF_WEEK, cal.getFirstDayOfWeek()); 
    SimpleDateFormat sdf = new SimpleDateFormat("EEEE dd.MM.yyyy"); 

    for (int i = 0; i < 7; i++) { 
     Log.i("dateTag", sdf.format(cal.getTime())); 
     cal.add(Calendar.DAY_OF_WEEK, 1); 
    } 
+0

да, код начинается с воскресенья, как я могу начать с понедельника? 'setFirstDayOfWeek (Calendar.MONDAY);' начинается 06.05; хотя сегодня в воскресенье 05.05. Я имею в виду, что он начнется в понедельник 29.04, а последний день будет в воскресенье 05.05. Является ли это возможным ? – metemet06

+0

Вы хотите, чтобы ваш код работал одинаково, независимо от текущих настроек локали? Если да, то просто используйте экземпляр «Календарь», например. UK locale: «Календарь cal = Calendar.getInstance (Locale.UK)». Британский локальный первый день недели - понедельник. В противном случае ваш код работает соответственно вашему текущему языку и вашему языку, указывая воскресенье как первый день недели, так что у вас такое поведение, даже если вы устанавливаете понедельник как первый день недели. – andrew

1

Попробуйте ->

Calendar c = Calendar.getInstance(); 
c.set(Calendar.DAY_OF_MONTH, 5); 
c.set(Calendar.MONTH, 7); 
c.set(Calendar.YEAR, 2013); 

int weekNo = c.get(Calendar.WEEK_OF_YEAR); 
c.set(Calendar.WEEK_OF_YEAR, weekNo); 

c.clear(); 

c.set(Calendar.WEEK_OF_YEAR, weekNo); 
c.set(Calendar.YEAR, 2013); 


SimpleDateFormat formatter = new SimpleDateFormat("EEE dd/MM/yyyy"); 
Date startDate = c.getTime(); 
c.add(Calendar.DATE, 1); 
for (int i = 0; i < 5; i++) { 
    Log.d(formatter.format(c.getTime())); 
    c.add(Calendar.DATE, 1); 
} 
+0

спасибо, вместо использования определенной даты (07.05.2013), как это сделать для текущей даты. Я хочу, чтобы я получил неделю, в которой текущая дата находится в – metemet06

+0

. Вы можете сделать это:> 'c.set (Calendar.DAY_OF_MONTH, new Date(). GetDate()); c.set (Calendar.MONTH, new Date(). GetMonth()); c.set (Calendar.YEAR, new Date(). GetYear()); ' –

+0

В любом случае, чтобы сделать первый день понедельника вместо воскресенья ... Я использовал' cal.setFirstDayOfWeek (Calendar.MONDAY); 'Он запускается с понедельника, но, к примеру, сегодня воскресенье 05.05.2013, но список начинается в понедельник 06.05.2013 ... Но я хочу взять неделю, что воскресенье - последний день, можно ли? – metemet06