codice:
package Control;
import java.util.Calendar;
public class DateUtil {
private static int currentWeek = Calendar.getInstance().get(Calendar.WEEK_OF_YEAR);
private static int currentYear = Calendar.getInstance().get(Calendar.YEAR);
private static int weekPointer = Calendar.getInstance().get(Calendar.WEEK_OF_YEAR);
private static int yearPointer = Calendar.getInstance().get(Calendar.YEAR);
public static int getCurrentWeek(){
return currentWeek;
}
public static int getWeekPointer(){
return weekPointer;
}
public static String getCurrentDate(){
int giorno = Calendar.getInstance().get(Calendar.DAY_OF_MONTH);
int mese = Calendar.getInstance().get(Calendar.MONTH);
int anno = Calendar.getInstance().get(Calendar.YEAR);
return giorno+"/"+mese+"/"+anno;
}
public static int getCurrentYear(){
return currentYear;
}
public static int[] getDaysOfWeekPointer(){
Calendar calendar = Calendar.getInstance();
calendar.setFirstDayOfWeek(1);
calendar.clear();
calendar.set(Calendar.WEEK_OF_YEAR, weekPointer);
calendar.set(Calendar.YEAR, yearPointer);
int[] d = new int[7];
d[0] = calendar.get(Calendar.DAY_OF_MONTH);
calendar.add(Calendar.DAY_OF_MONTH,1);
d[1] = calendar.get(Calendar.DAY_OF_MONTH);
calendar.add(Calendar.DAY_OF_MONTH,1);
d[2] = calendar.get(Calendar.DAY_OF_MONTH);
calendar.add(Calendar.DAY_OF_MONTH,1);
d[3] = calendar.get(Calendar.DAY_OF_MONTH);
calendar.add(Calendar.DAY_OF_MONTH,1);
d[4] = calendar.get(Calendar.DAY_OF_MONTH);
calendar.add(Calendar.DAY_OF_MONTH,1);
d[5] = calendar.get(Calendar.DAY_OF_MONTH);
calendar.add(Calendar.DAY_OF_MONTH,1);
d[6] = calendar.get(Calendar.DAY_OF_MONTH);
return d;
}
public static int nextWeek(){
Calendar calendar = Calendar.getInstance();
calendar.clear();
calendar.set(Calendar.WEEK_OF_YEAR, weekPointer);
calendar.add(Calendar.WEEK_OF_YEAR,1);
weekPointer = calendar.get(Calendar.WEEK_OF_YEAR);
yearPointer = calendar.get(Calendar.YEAR);
return weekPointer;
}
public static int prevWeek(){
Calendar calendar = Calendar.getInstance();
calendar.clear();
calendar.set(Calendar.WEEK_OF_YEAR, weekPointer);
calendar.add(Calendar.WEEK_OF_YEAR, -1);
weekPointer = calendar.get(Calendar.WEEK_OF_YEAR);
yearPointer = calendar.get(Calendar.YEAR);
return weekPointer;
}
public static int restoreWeek(){
Calendar calendar = Calendar.getInstance();
calendar.clear();
calendar.set(Calendar.WEEK_OF_YEAR, currentWeek);
weekPointer = calendar.get(Calendar.WEEK_OF_YEAR);
yearPointer = calendar.get(Calendar.YEAR);
return weekPointer;
}
}
Qualcuno mi spiega perchè richiamando diverse volte i metodi next, prev e restoreWeek ottengo il range corretto dei giorni della settimana tranne nel primo caso della chiamata getDaysOfWeekPointer()? Vi posto una schermata dei vari System.out.println()
codice:
La settimana attuale è la 41 e ha i seguenti giorni: 10, 11, 12, 13, 14, 15, 16,
La settimana attuale è la 42 e ha i seguenti giorni: 18, 19, 20, 21, 22, 23, 24,
La settimana attuale è la 43 e ha i seguenti giorni: 25, 26, 27, 28, 29, 30, 31,
La settimana attuale è la 44 e ha i seguenti giorni: 1, 2, 3, 4, 5, 6, 7,
La settimana attuale è la 41 e ha i seguenti giorni: 11, 12, 13, 14, 15, 16, 17,
La settimana attuale è la 40 e ha i seguenti giorni: 4, 5, 6, 7, 8, 9, 10,
La settimana attuale è la 39 e ha i seguenti giorni: 27, 28, 29, 30, 1, 2, 3,
La settimana attuale è la 38 e ha i seguenti giorni: 20, 21, 22, 23, 24, 25, 26,
La settimana attuale è la 37 e ha i seguenti giorni: 13, 14, 15, 16, 17, 18, 19,
come potete notare, alla prima chiamata i giorni sono sfasati di -1 mentre all'altra chiamata della settimana 41 è tutto come dovrebbe essere. Chi mi spiega perchè? sto impazzendo!