2013-05-05 18 views
5

Voglio ottenere le date della settimana correnteOttenere giorni della settimana corrente con date

Pensiamo: oggi è martedì 07.05.2013. Voglio ottenere un elenco di questa settimana con date

Come posso fare questo?

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 

risposta

15

Questo codice funziona utilizzando il sistema primo giorno della settimana, che potrebbe essere diversa da Domenica.

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

sì, il codice inizia con la domenica, come posso iniziare con lunedì? 'setFirstDayOfWeek (Calendar.MONDAY);' inizia 06.05; anche se oggi è domenica 05.05. Voglio dire che inizierebbe lunedì 29.04 e l'ultimo giorno sarà domenica 05.05. È possibile ? – metemet06

+0

Vuoi che il tuo codice funzioni allo stesso modo indipendentemente dalle attuali impostazioni locali dell'utente? Se sì, usa semplicemente l'istanza di 'Calendar' per es. Impostazioni locali del Regno Unito: 'Calendario cal = Calendar.getInstance (Locale.UK)'. Il primo giorno della settimana del Regno Unito è lunedì. Altrimenti il ​​tuo codice funzionerà, rispettivamente, la tua Locale corrente e la tua Locale specificherà Domenica come primo giorno della settimana, quindi questo è il modo in cui hai questo comportamento anche se imposti il ​​lunedì come primo giorno della settimana. – andrew

1

Prova questo ->

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

grazie, anziché utilizzare una certa data (07.05.2013), come è possibile farlo per la data corrente. Voglio dire, voglio ottenere la settimana in cui è la data corrente in – metemet06

+0

Puoi farlo così-> 'c.set (Calendar.DAY_OF_MONTH, new Date(). GetDate()); c.set (Calendar.MONTH, new Date(). GetMonth()); c.set (Calendar.YEAR, new Date(). GetYear()); ' –

+0

Esiste comunque il primo giorno di lunedì anziché la domenica ... Ho usato' cal.setFirstDayOfWeek (Calendar.MONDAY); 'Inizia da lunedì ma per esempio oggi è domenica 05.05.2013, ma la lista inizia lunedì 06.05.2013 ... Ma voglio prendere settimana che la domenica è l'ultimo giorno, è possibile? – metemet06

Problemi correlati