Date

di il
24 risposte

Date

Salve come posso ,data in input una data nel formato GG/MM/AAAA stampare la data del 40 anniversario della data messa in input?

24 Risposte

  • Re: Date

    groove ha scritto:


    Salve come posso ,data in input una data nel formato GG/MM/AAAA stampare la data del 40 anniversario della data messa in input?
    Innanzitutto fai il parsing della stringa per ottenere un java.util.Date (SimpleDateFormat con il pattern specifico).
    Poi crei e imposti un Calendar dal Date. Quindi aggiungi 40 anni al Calendar. Alla fine puoi riottenere un Date (se lo devi riformattare).

    Da Java 8 si può fare anche meglio con la nuova Date/Time API.
  • Re: Date

    OK ma mi aggiunge solo 40 anni?teoricamente dovrebbe uscirmi anche giorno e mese della data che ho messo in input
  • Re: Date

    groove ha scritto:


    dovrebbe uscirmi anche giorno e mese della data che ho messo in input
    Sì è così .... appunto 40 anni dopo.
  • Re: Date

    Ok quindi teoricamnet cambiano anche giorno e mese,se ti sto chiedendo molto e perche prima ho utilizzato la classe calendar del Date pero
    mi aggiungeva solo gli anni mentre i mesi e i giorni rimanevano invariati.Se in caso non mi puoi passare il link o qualcosa di quello che hai detto che non ho capito bene
  • Re: Date

    Alt, chiariamo una cosa. Se aggiungi 40 anni, giorno/mese di norma NON cambiano. O perlomeno possono cambiare se quel giorno 40 anni dopo non "esiste".

    Es. 10/04/2018 --> 10/04/2058

    Quindi, cosa ti aspetti?
  • Re: Date

    Allora si e vero ti chiedo scusa ho esposto male il mio problema,come hai detto nel ultimo mex ho capito e va bene il problema e che mi deve uscire
    il giorno (lunedi,martedi...)
    ad esempio oggi 10/04/2018 e martedi il 10/04/2048 sara mercoledi.
  • Re: Date

    Niente?
  • Re: Date

    groove ha scritto:


    il problema e che mi deve uscire
    il giorno (lunedi,martedi...)
    ad esempio oggi 10/04/2018 e martedi il 10/04/2048 sara mercoledi.
    Ma nel Calendar è già così. Poi se vuoi che il giorno della settimana esca fuori nella formattazione .. è un altro discorso.
  • Re: Date

    Come posso fare eventualmente?
  • Re: Date

    import java.text.ParseException;
    import java.text.SimpleDateFormat;
    import java.util.Calendar;
    import java.util.Date;
    
    public class ProvaAnniversario40 {
        public static void main(String[] args) throws ParseException {
            provaAggiungi40Anni("10/04/2018");
        }
    
        private static void provaAggiungi40Anni(String inputStr) throws ParseException {
            SimpleDateFormat df = new SimpleDateFormat("dd/MM/yyyy");
            Date inputDate = df.parse(inputStr);
            Calendar cal = Calendar.getInstance();
            cal.setTime(inputDate);
            int inputDow = cal.get(Calendar.DAY_OF_WEEK);
            cal.add(Calendar.YEAR, 40);
            int outputDow = cal.get(Calendar.DAY_OF_WEEK);
            Date outputDate = cal.getTime();
            String outputStr = df.format(outputDate);
    
            System.out.printf("%s (%d) ---> %s (%d)%n",
                    inputStr, inputDow, outputStr, outputDow);
        }
    }
    L'output è:

    10/04/2018 (3) ---> 10/04/2058 (4)

    Quel 3 è Martedì, 4 è Mercoledì.

    Nota: Calendar.SUNDAY = 1 ; Calendar.MONDAY = 2 ; ecc.....


    P.S. se la data di inizio fosse il 29/02/1860, guarda cosa succede:

    29/02/1860 (4) ---> 28/02/1900 (4)

    Il 1860 è bisestile, il 1900 no. Quindi non esistendo il 29/02/1900 ha "aggiustato" al 28/02.
    Sì .. è un caso MOLTO particolare.
  • Re: Date

    Ok ti ringrazio sei stato gentilissimo ,solo un ultima cosa se voglio inserirlo io la data come faccio?creo l oggetto della classe Scanner e poi?
  • Re: Date

    groove ha scritto:


    se voglio inserirlo io la data come faccio?creo l oggetto della classe Scanner e poi?
    L'input deve essere una stringa, quindi next() o nextLine().

    P.S. ho aggiornato il post prima con un "caso" particolare.
  • Re: Date

    Public class ProvaAnniversario40 {
    public static void main(String[] args) throws ParseException {
    Scanner sc=new Scanner(System.in);

    String provaAggiungi40Anni=sc.nextLine();
    }

    private static void provaAggiungi40Anni(String inputStr) throws ParseException {
    SimpleDateFormat df = new SimpleDateFormat("dd/MM/yyyy");
    Date inputDate = df.parse(inputStr);
    Calendar cal = Calendar.getInstance();
    cal.setTime(inputDate);
    int inputDow = cal.get(Calendar.DAY_OF_WEEK);
    cal.add(Calendar.YEAR, 40);
    int outputDow = cal.get(Calendar.DAY_OF_WEEK);
    Date outputDate = cal.getTime();
    String outputStr = df.format(outputDate);

    System.out.printf("%s (%d) ---> %s (%d)%n",
    inputStr, inputDow, outputStr, outputDow);
    }
    }
    non mi esce poi
  • Re: Date

    groove ha scritto:


    non mi esce poi
    Non hai invocato il metodo provaAggiungi40Anni
Devi accedere o registrarti per scrivere nel forum
24 risposte