Visualizzazione dei risultati da 1 a 5 su 5
  1. #1

    riacavare la data di un tot di giorni fa

    ciao a tutti, volevo chieder se tra "Calendar" o altre classi cè un funzione che mi dice la data per esempio di 141 giorni fa... per farvi capire meglio un esempio banale, oggi è 11/8/2010 io voglio sapere 2 giorni fa che data era e la funzione deve restituirmi 9/8/2010...
    ho cercato un pò sulla documentazione della sun ma sono negato con l'inglese

  2. #2
    Dai un occhiata a questo esempio:

    codice:
    import java.text.DateFormat;
    import java.text.SimpleDateFormat;
    import java.util.Calendar;
    import java.util.GregorianCalendar;
    
    public class DateTest {
    
    	public DateTest() {
    		calculateDate(365);
    		calculateDate(-365);
    		calculateDate(21);
    	}
    	
    	private void calculateDate(int offset) {
    		Calendar now = GregorianCalendar.getInstance();
    		now.setLenient(true);
    		DateFormat sdf = new SimpleDateFormat("dd/MM/yyyy");
    
    		System.out.println("Data odierna: " + sdf.format(now.getTime()));
    		now.add(Calendar.DAY_OF_YEAR, offset);
    		System.out.println("Data rielaborata: " + sdf.format(now.getTime()));
    	}
    	
    	public static void main(String[] args) {
    		new DateTest();
    	}
    
    }
    "Mai discutere con un idiota. Ti trascina al suo livello e ti batte con l'esperienza." (Oscar Wilde)

  3. #3
    Utente di HTML.it
    Registrato dal
    Dec 2009
    Messaggi
    1,123
    Calendar offre delle variabili che stanno ad indicare l'anno corrente, il mese, il giorno della settimana.
    Tramite un oggetto GregorianCalendar è possibile manipolarle, ed ottenere anche (ovviamente) la data corrente.

    codice:
    GregorianCalendar gc = new GregorianCalendar();
    Per ottenere i giorni:
    codice:
    System.out.println(gc.get(Calendar.DAY_OF_MONTH)+"/"+(gc.get(Calendar.MONTH)+1)+"/"+gc.get(Calendar.YEAR));
    
    // 12/8/2010
    Se vuoi andare ad una data puoi utilizzare un altra forma, come ad esempio:
    codice:
    GregorianCalendar gc = new GregorianCalendar(year,month,day);
    Ricordati che i mesi sono 0-based, questo vuol dire che gennaio è uguale a 0 e non a 1 (ecco perchè la sopra ho messo quel +1.

    Fornisce anche altri metodi, tra cui add
    codice:
    gc.add(Calendar.DAY,-2);
    Io ti mostro un altro esempio, così da illustrati un pò il funzionamento di GregorianCalendar
    codice:
    import java.util.*;
    
    class EsempioDate {
      private GregorianCalendar gc;
      
      EsempioDate() {
        gc = new GregorianCalendar();
      }
      
      void resetData() {
        gc = new GregorianCalendar();
      }
      
      void dataCorrente() {
        System.out.println(gc.get(Calendar.DAY_OF_MONTH)+"/"+(gc.get(Calendar.MONTH)+1)+"/"+gc.get(Calendar.YEAR));
      }
      
      void offsetDaDataCorrente(int offset) {
        // riceve il nome del campo, ed il numero da sommare a quel campo.
    	// va da se che un numero negativo verrà sottratto e non addizionato
        gc.add(Calendar.DAY_OF_MONTH,offset);
    	dataCorrente();
      }
    }
    
    class EsempioCalendar {
      public static void main(String[] args) {
        EsempioDate ed = new EsempioDate();
    	
    	// Mostra la data di oggi
    	ed.dataCorrente();
    	// mostra la data che passo, sommando 2 alla variabile DAY_OF_MONTH
    	ed.offsetDaDataCorrente(2);
    	// riporta la data allo stato "originale" (ad oggi)
    	ed.resetData();
    	// data -2 giorni (ovvero vado a 2 giorni fa)
    	ed.offsetDaDataCorrente(-2);
      }
    }
    output:
    codice:
    12/8/2010
    14/8/2010
    10/8/2010
    Come ho detto il metodo add somma al campo passato il numero che si vuole. Se il numero è positivo il numero verrà appunto addizionato, in caso contrario verrà sottratto.

  4. #4
    grazie mille a entrambi

  5. #5
    Utente di HTML.it
    Registrato dal
    Dec 2009
    Messaggi
    1,123
    Originariamente inviato da Attak
    grazie mille a entrambi
    Ovviamente al posto di concatenare le cifre come ho fatto io sarebbe meglio utilizzare un:
    codice:
    DateFormat sdf = new SimpleDateFormat("dd/MM/yyyy");
    come fatto da satifal


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.