2011-12-28 11 views
7

Desidero ottenere la data di inizio & data di fine settimana, per un numero di settimana passato al metodo. Ad esempio, se mi passate il numero della settimana come 51 e l'anno come 2011, deve restituire iniziare data 18 Dec 2011 e la data di fine, come 24 Dec 2011settimana di inizio e data di fine settimana numero e anno in Android

Ci sono metodi che mi aiuteranno a raggiungere questo obiettivo?

+0

Ho provato a utilizzare MonthDisplayHelper e JodaTime, ma in qualche modo non sono riuscito a ottenere il necessario. Thanx Sunil & Chase .. proverà la tua soluzione e ti farò sapere – AndroidGuy

risposta

19

È possibile utilizzare il seguente metodo per ottenere prima data e data di fine di una settimana

void getStartEndOFWeek(int enterWeek, int enterYear){ 
//enterWeek is week number 
//enterYear is year 
     Calendar calendar = Calendar.getInstance(); 
     calendar.clear(); 
     calendar.set(Calendar.WEEK_OF_YEAR, enterWeek); 
     calendar.set(Calendar.YEAR, enterYear); 

     SimpleDateFormat formatter = new SimpleDateFormat("ddMMM yyyy"); // PST` 
     Date startDate = calendar.getTime(); 
     String startDateInStr = formatter.format(startDate); 
     System.out.println("...date..."+startDateInStr); 

     calendar.add(Calendar.DATE, 6); 
     Date enddate = calendar.getTime(); 
     String endDaString = formatter.format(enddate); 
     System.out.println("...date..."+endDaString); 
    } 
+0

anno 2015, 2016, vieni una settimana in più ma 2013,2014 vieni esattamente ... è questo il problema dell'anno bisestile .. –

+0

Ciao Kamal, qualsiasi soluzione per sopra questione citata ?? – Deva

3

È necessario utilizzare la classe java.util.Calendar. È possibile impostare l'anno con Calendar.YEAR e la settimana dell'anno con Calendar.WEEK_OF_YEAR utilizzando il metodo public void set(int field, int value).

Finché le impostazioni internazionali sono impostate correttamente, è anche possibile utilizzare setFirstDayOfWeek per modificare il primo giorno della settimana. La data rappresentata dall'istanza del calendario sarà la data di inizio. Aggiungi semplicemente 6 giorni per la data di fine.

Calendar calendar = new GregorianCalendar(); 
// Clear the calendar since the default is the current time 
calendar.clear(); 
// Directly set year and week of year 
calendar.set(Calendar.YEAR, 2011); 
calendar.set(Calendar.WEEK_OF_YEAR, 51); 
// Start date for the week 
Date startDate = calendar.getTime(); 
// Add 6 days to reach the last day of the current week 
calendar.add(Calendar.DAY_OF_YEAR, 6); 
// End date for the week 
Date endDate = calendar.getTime(); 
Problemi correlati