Visualizzazione dei risultati da 1 a 7 su 7
  1. #1
    Utente di HTML.it
    Registrato dal
    Dec 2011
    Messaggi
    59

    aggiornare campo date su db

    Ciao a tutti!
    Qualcuno sa come si puo fare per aggiornare una tabella access inserendo delle date dal giorno di oggi in poi?
    Mi spiego meglio. devo aggiornare una tabella di access che io utilizzo come calendario. quando arrivo all'ultima data della tabella, devo ripopolarla inserendo le nuove date.
    solo che io riesco a ricavarmi solo la data di oggi. come faccio a ricavarmi anche le date di domani, dopo domani ecc..

    La data di oggi la ottengo:

    Date dateToday = new Date(System.currentTimeMillis());

    Naturalmente a me serve un oggetto Date! non string!

    Grazie!!!!

  2. #2
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,328
    Usa un oggetto GregorianCalendar il quale possiede i metodi per poter aggiungere algebricamente alla data da lui rappresentata determinate quantità di tempo (aggiungere/togliere N giorni, N mesi, N anni, N settimane...)

    Da un oggetto GregorianCalendar, poi, è possibile ottenere un oggetto Date (se è ciò che ti serve) usando il metodo getTime().

    Piccolo esempio di stampa dei prossimi 10 giorni:

    codice:
    SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy");
    
    // Data e ora di oggi
    GregorianCalendar gc = new GregorianCalendar();
    
    for(int i=0; i<10; i++) {
       gc.add(Calendar.DATE, 1);   // Aggiungo 1 giorno
       System.out.println( sdf.format(gc.getTime()) );
    }
    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
    Aldilà che puoi usare il GregorianCalendar come ha illustrato benissimo LeleFT, ma per avere un oggetto Date con la data di domani basta che ti fai un calcolo di quanti ms ci sono in una giornata:

    codice:
    long msOggi = System.currentTimeMillis();
    long msAlGiorno = 86400000;
    Date oggi = new Date(msOggi);
    Date domani = new Date(msOggi + msAlGiorno);
    Date dopoDomani = new Date(msOggi + (msAlgiorno * 2));
    // ecc.
    "Na' sedia te vojo tirà!"

  4. #4
    Utente di HTML.it
    Registrato dal
    Dec 2011
    Messaggi
    59
    Ok grazie funziona tutto!
    Vi dovrei chiedere un'altra cosa.
    Devo fare la stessa cosa, pero sta volta devo incrementare non la data odierna, ma una data che memorizzo (sempre di tipo Date)!
    Come si puo fare?
    Grazie!!!!!

  5. #5
    codice:
    Date tuaData = ecc...
    long msAlGiorno = 86400000;
    Date tuaDataAllIndomani = new Date(tuaData.getTime() + msAlGiorno);
    "Na' sedia te vojo tirà!"

  6. #6
    Utente di HTML.it
    Registrato dal
    Dec 2011
    Messaggi
    59
    non ho capito cos'è quel long msAlGiorno!

  7. #7
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,328
    Originariamente inviato da Alice91
    non ho capito cos'è quel long msAlGiorno!
    Il numero di millisecondi presenti in un giorno.
    In un giorno ci sono 24 ore, ogni ora è formata da 60 minuti, ogni minuto è formato da 60 secondi, ogni secondo è formato da 1000 millisecondi.

    24 * 60 * 60 * 1000 = 86400000 millisecondi in un giorno.

    Dato che le date in Java si misurano come numero di millisecondi trascorsi dal 1 gennaio 1970, aggiungendo quel valore fai incrementare la data di 1 giorno.

    Esiste l'alternativa (o meglio, due alternative):

    codice:
    // La tua data
    Date tuaData = ...;
    
    // Costruisco un oggetto GregorianCalendar
    GregorianCalendar gc = new GregorianCalendar();
    
    // Gli impongo la data che voglio
    gc.setTime( tuaData );
    
    // ora lavoro con il GregorianCalendar
    gc.add(Calendar.DATE, 1);
    La seconda alternativa è costruire il GregorianCalendar direttamente con la data che desideri:

    codice:
    // Costruisco un GregorianCalendar posizionato alla data del 28/06/2012
    GregorianCalendar gc = new GregorianCalendar(2012, 5, 28);
    
    // E poi ci lavoro su
    gc.add(Calendar.DATE, 1);
    Da fare attenzione: GregorianCalendar tratta i mesi come 0-based, quindi 0 = Gennaio, 1 = Febbraio, 2 = Marzo...


    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

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.