Visualizzazione dei risultati da 1 a 6 su 6
  1. #1
    Utente di HTML.it
    Registrato dal
    Sep 2008
    Messaggi
    271

    [java] calcolare date

    partendo dalla data di oggi che recupero così:

    String dataOdierna = (new Date(System.currentTimeMillis())).toString();

    come faccio a calcolarmi la data del prossimo anno, a partire dalla data attuale, e la data del primo giorno del mese successivo a quello della data attuale?

  2. #2
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,480

    Moderazione

    Ho spostato la discussione nel forum dedicato a Java.
    In futuro, poni qui le tue domande relative a questo linguaggio.

    Ciao!
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

  3. #3
    Utente di HTML.it
    Registrato dal
    Sep 2008
    Messaggi
    271
    cambiando il modo di acquisire la data attuale, sono riuscito a risolvere..
    questo è per la data dell'anno successivo:

    codice:
                    Calendar cal = new GregorianCalendar();
                    int giorno = cal.get(Calendar.DAY_OF_MONTH);
                    int mese = cal.get(Calendar.MONTH);
                    int anno = cal.get(Calendar.YEAR);
                    String dataOdierna = "" + anno;
                    String dataFutura = "" + (anno+1);
                    if ( mese < 10 ) {
                        dataOdierna += "-0" + (mese + 1) + "-" + giorno;
                        dataFutura += "-0" + (mese + 1) + "-" + giorno;
                    } else {
                        dataOdierna += "-" + (mese + 1) + "-" + giorno;
                        dataFutura += "-" + (mese + 1) + "-" + giorno;
                    }
    e in modo analogo si può fare per trovare il primo giorno del mese successivo... il problema è solo che non mi sembra molto "elegante" come soluzione, anche se funzionale... qualcuno ha qualcosa di meglio da consigliare?

  4. #4
    Utente di HTML.it L'avatar di Pastore12
    Registrato dal
    Oct 2008
    Messaggi
    1,051
    da qui

    Codice PHP:
    SimpleDateFormat formatter = new SimpleDateFormat("dd/MM/yyyy");
    Date data = new Date();
    String stringa formatter.format(data); 
    "Ethics are to me something private. Whenever you use it as an argument for why somebody_else should do something, you’re no longer being ethical, you’re just being a sanctimonious dick-head"
    Linus Torvalds

  5. #5
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284

    Re: [java] calcolare date

    Originariamente inviato da dogo21sob
    String dataOdierna = (new Date(System.currentTimeMillis())).toString();
    Così comunque ci sarebbe del superfluo ... il costruttore senza argomenti di Date già usa internamente currentTimeMillis()!!

    Originariamente inviato da dogo21sob
    come faccio a calcolarmi la data del prossimo anno, a partire dalla data attuale, e la data del primo giorno del mese successivo a quello della data attuale?
    In entrambi i casi usa un GregorianCalendar e usa i set/add per fare i dovuti calcoli/impostazioni.

    codice:
    GregorianCalendar c = new GregorianCalendar();    // Data corrente
    c.setLenient(false);
    c.add(Calendar.YEAR, 1);     // Data con un anno in più
    codice:
    GregorianCalendar c = new GregorianCalendar();    // Data corrente
    c.set(Calendar.DAY_OF_MONTH, 1);   // Primo giorno del mese
    c.add(Calendar.MONTH, 1);          // Data con un mese in più
    Se ti serve un Date, usa getTime(), se ti serve formattare in stringa un Date, usa DateFormat/SimpleDateFormat.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  6. #6
    Personalmente ti consiglio di usare la classe java.util.Calendar.

    1.- Data odierna:
    Calendar dataOdierna = GregorianCalendar.getInstance();

    2.- Data del prossimo anno a partire dalla data attuale (mantenendo giorno e mese uguali):

    a.- Calendar dataAdUnAnno = GregorianCalendar.getInstance(); // istanzio nuova data uguale a data odierna

    b.- dataAdUnAnno.setTimeInMillis(dataOdierna.getTimeIn Millis()); // setto il valore della data uguale al valore contenuto in data odierna

    c.- dataAdUnAnno.add(GregorianCalendar.YEAR, +1); // Aggiungo 1 anno alla data contenuta nella variabile.

    Invece dei punti a e b avremmo potuto usare anche l'istruzione:

    Calendar dataAdUnAnno = dataOdierna.clone(); // istanzia duplicandola una nuova variabile

    3.- Data primo giorno mese successivo:
    Calendar dataPrimoGiornoMeseSuccessivo = dataOdierna.clone();
    dataPrimoGiornoMeseSuccessivo.add(GregorianCalenda r.MONTH) + 1); // i mesi variano da 0 = Gennaio ad 11 dicembre devi usare un if per controllare di non incrementare a 12 che non esiste
    dataPrimoGiornoMeseSuccessivo.set(Calendar.DAY_OF_ MONTH, 1);

    Se poi ti serve passare a java.util.Date:

    java.util.Date dataPrimoGiornoMeseSuccADate = new java.util.Date(dataPrimoGiornoMeseSuccessivo.getTi meInMillis();

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 © 2026 vBulletin Solutions, Inc. All rights reserved.