Visualizzazione dei risultati da 1 a 3 su 3

Discussione: errore con le date

  1. #1
    Utente di HTML.it L'avatar di oronze
    Registrato dal
    Jun 2001
    Messaggi
    3,543

    errore con le date

    Ciao, sicuramente è una cacchiata ma ho riletto il codice diverse volte e non ne sono mai venuto a capo...
    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!

    No ai layout tabellari!

    Insulto libero: http://forum.html.it/forum/showthread.php?s=&postid=12524872#post12524872

  2. #2
    Utente di HTML.it
    Registrato dal
    Dec 2009
    Messaggi
    1,123
    Hai tenuto conto del fatto che i mesi partono dallo 0? (gennaio = 0 e non 1).

  3. #3
    Utente di HTML.it L'avatar di oronze
    Registrato dal
    Jun 2001
    Messaggi
    3,543
    Originariamente inviato da Patrick Jane
    Hai tenuto conto del fatto che i mesi partono dallo 0? (gennaio = 0 e non 1).

    ma hai letto cosa fa il mio codice? sapere il mese non mi serve a nulla e non lo uso praticamente mai
    in ogni caso ho risolto...prima di utilizzare il metodo getDaysOfWeekPointer(), solo la prima volta, richiamo restoreWeek() e funziona anche se non capisco il perchè

    No ai layout tabellari!

    Insulto libero: http://forum.html.it/forum/showthread.php?s=&postid=12524872#post12524872

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.