2013-05-05 14 views
5

Chcę uzyskać bieżące terminy w tygodniuOtrzymywanie bieżących dni tygodnia z datami

Pozwala myśleć: dzisiaj jest wtorek 07.05.2013. Chcę uzyskać listę dni tygodnia z datami:

Jak mogę to zrobić?

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 

Odpowiedz

15

Kod ten będzie działał z wykorzystaniem systemu pierwszego dnia tygodnia, które mogą różnić się od niedzieli.

+0

tak, kod rozpoczyna się w niedzielę, jak zacząć od poniedziałku? 'setFirstDayOfWeek (Calendar.MONDAY);' zaczyna 06.05; chociaż dzisiaj jest niedziela 05.05. Chodzi mi o to, że rozpocznie się w poniedziałek 29.04, a ostatni dzień będzie w niedzielę 05.05. Czy to możliwe ? – metemet06

+0

Czy chcesz, aby kod działał w taki sam sposób, niezależnie od bieżących ustawień regionalnych użytkownika? Jeśli tak, po prostu użyj instancji 'Calendar' dla np. Ustawienia regionalne w Wielkiej Brytanii: 'Calendar cal = Calendar.getInstance (Locale.UK)'. Pierwszym dniem tygodnia w Wielkiej Brytanii jest poniedziałek. W przeciwnym razie twój kod będzie działał, odpowiednio, w bieżącym locale i locale określają niedzielę jako pierwszy dzień tygodnia, więc w ten sposób zachowujesz się tak samo, nawet jeśli ustawiasz poniedziałek jako pierwszy dzień tygodnia. – andrew

1

Spróbuj tego ->

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

dzięki, zamiast używać określonej daty (07.05.2013), w jaki sposób można to zrobić dla bieżącej daty. Chodzi mi o to, że chcę dostać tydzień, w którym bieżąca data jest w – metemet06

+0

Możesz zrobić tak -> 'c.set (Kalendarz.DAY_OF_MONTH, nowa data(). GetDate()); c.set (Calendar.MONTH, new Date(). GetMonth()); c.set (Calendar.YEAR, new Date(). GetYear()); ' –

+0

Czy jest tak, aby zrobić pierwszy dzień poniedziałek zamiast niedzieli ... Użyłem' cal.setFirstDayOfWeek (Calendar.MONDAY); 'Zaczyna się od poniedziałku, ale na przykład dzisiaj jest niedziela 05.05.2013, ale lista zaczyna się w poniedziałek 06.05.2013 ... Ale chcę wziąć tydzień, że niedziela jest ostatnim dniem, czy to możliwe? – metemet06