Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 14
  1. #1
    Utente di HTML.it L'avatar di arw
    Registrato dal
    Dec 2007
    Messaggi
    149

    Gregorian Calendar tornare indietro da una data

    Ciao a tutti,
    mi trovo ad avere a che fare con una data 01-01-2010
    devo però da questa data prendere il giorno prima, in questo caso sarebbe il 31-12-2009.

    La data non è fissa è l'utente che l'imposta, io devo prendere poi il giorno prima.
    Pensavo di usare GregorianCalendar, ma non so come fare.....

    qualcuno mi sa aiutare o indirizzare?
    Grazie mille!
    Ciao!

  2. #2
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,328
    Prima ottieni il GregorianCalendar della data che inserisce l'utente.
    Successivamente esegui questa semplice operazione:

    codice:
    GregorianCalendar gc = new GregorianCalendar( ... );   // Ottieni il GregorianCalendar
    gc.add(gc.DATE, -1);  // Aggiungo "-1" giorni (torno indietro di un giorno)

    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  3. #3
    Utente di HTML.it L'avatar di arw
    Registrato dal
    Dec 2007
    Messaggi
    149
    grazie... ora ci provo!

  4. #4
    Utente di HTML.it L'avatar di arw
    Registrato dal
    Dec 2007
    Messaggi
    149
    mi manca un pezzetto, ovvero
    cosi come ho eseguito mi da solo un giorno in meno
    non la data completa (con un giorno) in meno;
    l'utente mi può scrivere qualsiasi data; io devo prendere il giorno prima
    esempio:
    se scrivono 01-03-2010 io devo prendere il 28-02-2010;
    se scrivono 25-04-2010 io devo prendere il 24-04-2010;
    se scrivono 01-05-2010 io devo prendere il 30-04-2010;
    nel caso mi scrivono 01-01-2010 il giorno prima è 31-12-2009.


    devo fare io dei ragionamenti o devo/posso usare qualche funzione che non conosco?

    grazie....!

  5. #5
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da arw
    cosi come ho eseguito mi da solo un giorno in meno
    non la data completa (con un giorno) in meno;
    Certo che ti dà la data completa .... è insita nel Calendar (e che potresti formattare in String prendendo il Date e usando un (Simple)DateFormat)!!

    Originariamente inviato da arw
    devo fare io dei ragionamenti o devo/posso usare qualche funzione che non conosco?
    Il modo è quello detto da LeleFT.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  6. #6
    Utente di HTML.it L'avatar di arw
    Registrato dal
    Dec 2007
    Messaggi
    149
    ummm, ok allora ci riprovo...! magari mi è sfuggito qualcosa...
    grazie mille.

  7. #7
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Giusto come esempio:

    codice:
    import java.util.*;
    import java.text.*;
    
    public class Prova {
        public static void main(String[] args) {
            SimpleDateFormat f = new SimpleDateFormat("dd/MM/yyyy");
    
            GregorianCalendar cal = new GregorianCalendar(2010, Calendar.MARCH, 1);
    
            System.out.println(f.format(cal.getTime()));
    
            cal.add(Calendar.DATE, -1);
    
            System.out.println(f.format(cal.getTime()));
        }
    }
    Output:

    01/03/2010
    28/02/2010
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  8. #8
    Utente di HTML.it L'avatar di arw
    Registrato dal
    Dec 2007
    Messaggi
    149
    funziona!!, ma ho dovuto fare in questa maniera:

    codice:
    GregorianCalendar gcal = new GregorianCalendar(Integer.parseInt(da),Integer.parseInt(dm),Integer.parseInt(dg));   // Ottieni il GregorianCalendar
        gcal.add(gcal.DATE, -1);  // Aggiungo "-1" giorni (torno indietro di un giorno)    
    
        gcal.add(gcal.MONTH, -1);
        strdataIndietroUNgiorno = String.valueOf(gcal.get(gcal.YEAR))+"-"+String.valueOf(gcal.get(gcal.MONTH)+1)+"-"+String.valueOf(gcal.get(gcal.DATE));
    Grazie a tutti!

  9. #9
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da arw
    codice:
        gcal.add(gcal.MONTH, -1);
    Perché devi decrementare il mese??? Io non ne vedo il motivo.

    E gli String.valueOf in realtà sono del tutto superflui!
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  10. #10
    Utente di HTML.it L'avatar di arw
    Registrato dal
    Dec 2007
    Messaggi
    149
    data partenza 01-04-2010
    se io uso questo
    codice:
    gcal.add(Calendar.DATE, -1);
    mi diventa 30-4-2010
    ...sbagliato!

    questo è tutto il mio pezzetto, sbaglio qualcosa?!
    codice:
    String datainiziostoricoCorrente="20010-04-01"
    String strdataIndietroUNgiorno ="";
    String dg="";
    String dm="";
    String da="";
    
    if(!datainiziostoricoCorrente.equalsIgnoreCase("")){
        da=datainiziostoricoCorrente.substring(0,4);
        dm=datainiziostoricoCorrente.substring(5,7);
        dg=datainiziostoricoCorrente.substring(8,10);
    
        GregorianCalendar gcal = new GregorianCalendar(Integer.parseInt(da),Integer.parseInt(dm),Integer.parseInt(dg));   // Ottieni il GregorianCalendar
    
        //gcal.add(gcal.DATE, -1);  // Aggiungo "-1" giorni (torno indietro di un giorno)
        //gcal.add(gcal.MONTH, -1);
        gcal.add(Calendar.DATE, -1);  // Aggiungo "-1" giorni (torno indietro di un giorno)
    
        strdataIndietroUNgiorno = String.valueOf(gcal.get(gcal.YEAR))+"-"+String.valueOf(gcal.get(gcal.MONTH)+1)+"-"+String.valueOf(gcal.get(gcal.DATE));
        
    }
    sto provando con entrambe gli ADD
    però a dire il vero, non mi restituisce il 31-03 ma il 30-03 usando il -1date e -1month
    mentre se uso il calendar-1 mi sbaglia proprio la data come ho scritto prima.

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.