Visualizzazione dei risultati da 1 a 7 su 7
  1. #1
    Utente di HTML.it
    Registrato dal
    Sep 2006
    Messaggi
    517

    [Java] problemi con le date

    Salve ragazzi ho 2 problemi molto strani con la libreria Calendar,GregorianCalendar e Date ovvero , per recuperare la data odierna faccio cosi:

    codice:
    GregorianCalendar gc = new GregorianCalendar();
    	Date data;
    
    int giorno= gc.get(Calendar.DAY_OF_MONTH);
    		int mese= gc.get(Calendar.MONTH);
    		int anno= gc.get(Calendar.YEAR);
    		data=new Date(giorno,mese,anno);
    		System.out.print(data +" giorno :" + giorno +" mese : " + mese + " anno : "+anno);
    il problema e che mi stampa questo:
    1927-04-03 giorno :21 mese : 9 anno : 2011,
    ovvero quando la variabile data mi restituisce questo 1927-04-03 mentre il mese mi restituisce 9 al posto di 10.

    mi sapreste dire il motivo?

  2. #2
    Utente di HTML.it
    Registrato dal
    Aug 2002
    Messaggi
    8,013
    Non usare quel costruttore, è obsoleto...

    Date
    Comunque il mese parte da 0 (non mi chiedere perché, l'hanno pensata così).
    <´¯)(¯`¤._)(¯`»ANDREA«´¯)(_.¤´¯)(¯`>
    "The answer to your question is: welcome to tomorrow"

  3. #3
    Utente di HTML.it
    Registrato dal
    Sep 2006
    Messaggi
    517
    ahahh... ok

    cosa posso usare?

  4. #4
    Utente di HTML.it
    Registrato dal
    Aug 2002
    Messaggi
    8,013
    GregorianCalendar ha il suo metodo getTime (per essere più precisi, derivato da Calendar) che ti ritorna un Date contenente le info della data settata nel GregorianCalendar.

    Per intenderci:
    codice:
    GregorianCalendar gc = new GregorianCalendar();
    System.out.println(gc.getTime());
    Ritornerà qualcosa del genere:
    codice:
    Fri Oct 21 15:21:07 CEST 2011
    Che è la rappresentazione String (nel mio Locale, ovviamente) di "adesso"
    <´¯)(¯`¤._)(¯`»ANDREA«´¯)(_.¤´¯)(¯`>
    "The answer to your question is: welcome to tomorrow"

  5. #5
    Utente di HTML.it
    Registrato dal
    Sep 2006
    Messaggi
    517
    Grazie andre ho seguito i tuoi consigli ed ho fatto cosi:

    codice:
    private DateFormat fodata = new SimpleDateFormat("yyyy-MM-dd"); 
    String datatemp = fodata.format(gc.getTime());
    	Date data;
    		
    			data = (Date) fodata.parse(datatemp);
    			System.out.print(datatemp);
    fin qui tutto bene, ma se io ora la rivolessi castare in date è possibile? Perchè ho provato cosi ma mi va in eccezione

  6. #6
    Utente di HTML.it
    Registrato dal
    Sep 2006
    Messaggi
    517
    Ovviamente Date e della libreria java.sql.Date e non della java.util.Date

  7. #7
    Utente di HTML.it
    Registrato dal
    Aug 2002
    Messaggi
    8,013
    ma perché fai avanti e indietro con ste date? Hai già tutto, solo che mi viene il sospetto che tu programmi senza API sotto mano, il che è male, soprattutto quando si usano classi/oggetti che non si conoscono o che si conoscono appena:

    codice:
    SimpleDateFormat fodata = new SimpleDateFormat("yyyy-MM-dd"); 
    String datatemp = fodata.format(gc.getTime());
    java.sql.Date sqlDate = new java.sql.Date(gc.getTimeInMillis());
    System.out.println("Formattata: "+datatemp+" SQL Date: "+sqlDate);
    quindi come vedi, non mi serve riparsare datetemp, ma uso direttamente il costruttore più adatto (e non hai molta scelta, visto che al pari di Date di utils anche quella di sql è molto limitata dai vari deprecated).
    <´¯)(¯`¤._)(¯`»ANDREA«´¯)(_.¤´¯)(¯`>
    "The answer to your question is: welcome to tomorrow"

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.