Visualizzazione dei risultati da 1 a 7 su 7

Discussione: gestione date in java

  1. #1

    gestione date in java

    Salve!
    vorremmo gestire un agenda con inserimento degli appuntamenti, e quindi anke della data , ora e durata dell'appuntamento. in particolare dobbiamo evitare di inserire per appuntamenti diversi, data e ora uguali, controllando anke la durata di questi. (la durata deve essere espressa in minuti).

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

    Re: gestione date in java

    Originariamente inviato da likioti687
    vorremmo gestire un agenda con inserimento degli appuntamenti, e quindi anke della data , ora e durata dell'appuntamento. in particolare dobbiamo evitare di inserire per appuntamenti diversi, data e ora uguali, controllando anke la durata di questi. (la durata deve essere espressa in minuti).
    Ne avevi già parlato in un altro thread ma non era molto chiaro cosa avevi intenzione di usare per orario e durata.

    Bene, vediamo di chiarire: hai un istante nel tempo e una durata in minuti. Potresti usare un Date per la data di inizio e un 'int' per la durata in minuti.

    Un java.util.Date è da trattare solo come un qualcosa che rappresenta un istante nel tempo con la precisione del millisecondo e basta. Se vuoi avere la data di fine, ti basta calcolare i millisecondi (dalla durata in minuti) e creare un nuovo Date che ha i millisecondi dell'inizio più quelli della durata.
    Quindi avrai 2 Date per il tuo appuntamento. Date implementa Comparable ed ha il compareTo(), quindi è facile e semplice comparare 2 Date.

    Dati 2 appuntamenti risulta quindi relativamente semplice stabilire se si "intersecano", basta solo che ragioni un pochino sui test da fare per verificare i vari casi.

    Detto questo, ti è più chiaro ora?
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  3. #3
    in pratica , noi dovremmo:
    Progettare, realizzare e testare un programma in Java che permetta la gestione di una agenda di appuntamenti, tutti registrati in un unico file. Ogni appuntamento è caratterizzato dalle seguenti informazioni:
    •data dell’appuntamento, nel formato gg-mm-aaaa;
    •orario dell’appuntamento, nel formato hh-mm;
    •durata prevista espressa in minuti;
    •nome della persona con cui si ha l’appuntamento;
    •luogo in cui si terrà l’appuntamento.
    Il programma deve offrire la possibilità di:
    1.
    inserire un nuovo appuntamento nell’agenda. In tal caso è necessario verificare correttezza e completezza dei dati inseriti e che non ci siano sovrapposizioni con altri appuntamenti già definiti per quello stesso orario, tenendo anche conto della durata. Ogni nuovo appuntamento deve essere registrato nel file.
    2.
    modificare i dati relativi a un appuntamento già registrato, effettuando gli stessi controlli del punto precedente.
    3.
    cercare un dato appuntamento e presentare tutte le relative informazioni. La ricerca può essere effettuata per data oppure usando il nome della persona con cui si ha l’appuntamento.
    4.
    elencare, ordinati per data, tutti gli appuntamenti registrati nel file.
    la nostra unica difficoltà è sviluppare i punti 1 e 4 al momento

  4. #4
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da likioti687
    inserire un nuovo appuntamento nell’agenda. In tal caso è necessario verificare correttezza e completezza dei dati inseriti e che non ci siano sovrapposizioni con altri appuntamenti già definiti per quello stesso orario, tenendo anche conto della durata.
    Per la questione della "sovrapposizione" l'ho spiegato sopra e credo bene. Se ci ragioni un pochino, dati in generale 4 Date, inizio1, fine1, inizio2 e fine2, bastano solamente 2 compareTo() in una AND per stabilire se si sovrappongono oppure no!

    Originariamente inviato da likioti687
    Ogni nuovo appuntamento deve essere registrato nel file.
    Ok ma bisogna vedere che tipo di file! Di testo? E in che formato? Oppure binario? E pure qui in quale formato? (es. una "tua" struttura particolare? O tramite "serializzazione" degli oggetti?). O altro (es. database)?

    E in base al tipo si può poi stabilire se è meglio tenere e fare tutto in memoria, ad esempio in una collezione, e solo alla fine permettere di fare un "salva" di tutto nel file. O se invece, per il tipo di file, è possibile aggiungere facilmente in modo "incrementale".

    Originariamente inviato da likioti687
    4.
    elencare, ordinati per data, tutti gli appuntamenti registrati nel file.
    L'ordinamento lo si fa meglio in memoria avendo una apposita collezione, non direttamente sul file (qualunque sia la sua struttura, ad eccezione dei DBMS). Se crei una "tua" classe Appuntamento che implementa Comparable (per stabilire l'ordinamento "naturale"), ordinare una lista di appuntamenti richiede solo 1 riga di codice, cioè la invocazione di sort() di java.util.Collections!


    Quando devi affrontare lo sviluppo di un grosso problema come quello di questa applicazione, cerca sempre di spezzare il tutto in tanti piccoli sottoproblemi, altrimenti non ne verrai mai a capo.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  5. #5
    grazie andbin per i suggerimenti consigliatomi

    allora io ho provato a scrivere così:

    codice:
    import java.lang.Comparable;
    import java.util.Calendar;
    import java.util.GregorianCalendar;
    import java.util.Scanner;
    import java.awt.*;
    import java.io.*;
    
    public class comparetocalender {
    
        public static void main(String[] args) {
        
        String[] dati = new String[9];
        Scanner in = new Scanner(System.in);
    
    	for (int i = 0; i < 9; i++) { //svuoto l'array
      		dati[i] = "";
      	}    
      		    
            System.out.println ("Confronto:");
            
            do{
    	    	System.out.println("Inserire la data nel seguemte formato (GG-MM-AAAA): ");
    	    	dati[2] = in.nextLine();
    	        if (dati[2].equalsIgnoreCase("Q")) {
    	    		 System.out.println("");
    	    		 return;
    	    	}
    	    	} while (dati[2].equals("") || (dati[2].length() != 10) || ! (dati[2].substring(2, 3).equals("-")) || ! (dati[2].substring(5, 6).equals("-")) );
            
            
            //Creating a calender
            Calendar c = new GregorianCalendar(dati[2]); 
            Calendar c1 = new GregorianCalendar(Calendar);
            // Compares the time values represented by two Calendar objects.
            int i = c.compareTo(c1);
            //returns positive value if equals else return negative value
            System.out.println(i);
    
        }
    }
    qui di sicuro ho sbagliato

    codice:
            Calendar c = new GregorianCalendar(dati[2]); 
            Calendar c1 = new GregorianCalendar(Calendar);
    però adesso voglio confrontare la data che io scrivo con quella del calendario. Ad esempio se scrivo 8/8/2008 mi deve dire che è OK, se in caso scrivo 8/88/2008 allora ERRORE...

  6. #6
    Qualcuno sa come si ottiene in Java la data odierna?

  7. #7
    Originariamente inviato da cassiosteel
    Qualcuno sa come si ottiene in Java la data odierna?
    codice:
    import java.util.*;
    public class DataCorrente{
      public static void main(String[] args){
      Calendar cal = new GregorianCalendar();
      int giorno = cal.get(Calendar.DAY_OF_MONTH);
      int mese = cal.get(Calendar.MONTH);
      int anno = cal.get(Calendar.YEAR);
      System.out.println(giorno + "-" + (mese + 1) + "-" + anno);
     }
    }

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.