Visualizzazione dei risultati da 1 a 9 su 9
  1. #1
    Utente di HTML.it L'avatar di tony83
    Registrato dal
    Feb 2005
    Messaggi
    3,179

    GregorianCalendar e bisestili (metodo add)

    mi sapete dire se la classe GregorianCalendar tiene conto anche degli anni bisestili quando va a fare un add?
    Tony

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

    Re: GregorianCalendar e bisestili (metodo add)

    Originariamente inviato da tony83
    mi sapete dire se la classe GregorianCalendar tiene conto anche degli anni bisestili quando va a fare un add?
    Sì, GregorianCalendar "sa" dei "leap year". (se così non fosse avrebbero dovuto linciare chi l'ha sviluppata ).
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  3. #3
    Utente di HTML.it L'avatar di tony83
    Registrato dal
    Feb 2005
    Messaggi
    3,179
    Quindi se scrivo:

    codice:
    	GregorianCalendar gc = new GregorianCalendar();
    			String FORMAT              = "dd-MM-yyyy";
    			
    			String dataSistema;
        		try
    			{
        			System.out.println((new SimpleDateFormat(FORMAT)).format(gc.getTime()));
        			gc.add(GregorianCalendar.MONTH, -13);
        			
        			
        			dataSistema = (new SimpleDateFormat(FORMAT)).format(gc.getTime());
    			}
    			catch (Exception ex)
    			{
    				dataSistema = "";
    				System.out.println("ERRORE");
    			}
    			
    			System.out.println("Data : " + dataSistema);
    La datasistema finale toglie un'anno considerando l'anno bisestile ?
    Tony

  4. #4
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da tony83
    La datasistema finale toglie un'anno considerando l'anno bisestile ?
    No alt ... in che senso "toglie un'anno"???
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  5. #5
    Utente di HTML.it L'avatar di Pastore12
    Registrato dal
    Oct 2008
    Messaggi
    1,051
    gc.add(GregorianCalendar.MONTH, -13);
    Da come la vedo io, con questa istruzione togli un anno e un mese.
    "Ethics are to me something private. Whenever you use it as an argument for why somebody_else should do something, you’re no longer being ethical, you’re just being a sanctimonious dick-head"
    Linus Torvalds

  6. #6
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da Pastore12
    Da come la vedo io, con questa istruzione togli un anno e un mese.
    Sì ... appunto ma io intendevo dire: cosa centra tutto questo con il bisestile??
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  7. #7
    Utente di HTML.it L'avatar di tony83
    Registrato dal
    Feb 2005
    Messaggi
    3,179
    mi serviva facendo le prove con per esempio 30-03-2009
    e mi restituisce il
    Data : 29-02-2008.

    quindi va bene, funziona.

    Grazie
    Tony

  8. #8
    Utente di HTML.it L'avatar di Pastore12
    Registrato dal
    Oct 2008
    Messaggi
    1,051
    Sì ... appunto ma io intendevo dire: cosa centra tutto questo con il bisestile??
    Secondo ma aveva un po' di confusione in testa e, quando ha scritto il codice, "pensava" che gli anni bisestili fossero di 13 mesi...

    ...

    Ah.. scusa Tony83, ho visto adesso che la spiegazione del mistero era un'altra..
    "Ethics are to me something private. Whenever you use it as an argument for why somebody_else should do something, you’re no longer being ethical, you’re just being a sanctimonious dick-head"
    Linus Torvalds

  9. #9
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da tony83
    mi serviva facendo le prove con per esempio 30-03-2009
    e mi restituisce il
    Data : 29-02-2008.

    quindi va bene, funziona.
    Sì, il senso è quello. GregorianCalendar "sa" quando un anno è bisestile (un giorno in più a febbraio) e quindi ne tiene conto nelle varie situazioni/casi. Se hai il 29/02/2008 (bisestile!) e sottrai 12 mesi, lui va al 28/02/2007 perchè lo sa che non c'è il 29 nel Febbrario 2007.

    Idem il caso che hai detto tu.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

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.