Datoer

Tags:    java

Hej,

Jeg er ved at lære mig Java ved hjælp af JavaBog.

Jeg er kommet til den opgave, hvor man skal udskive hvad datoen er idag, imorgen, om en uge og om et år.

Det virker fint med imorgen og om en uge, men det passer ikke med om et år. Hvad kan det skyldes tror i?
Kan long evt ikke rumme nok millisekunder til at lægge et helt år til?

Fold kodeboks ind/udKode 


Resultat ved kørsel:
Idag er det: Mon Apr 09 16:12:13 CEST 2007
Imorgen er det: Tue Apr 10 16:12:13 CEST 2007
Om en uge er det: Mon Apr 16 16:12:13 CEST 2007
Om et år er det: Thu Apr 26 16:52:42 CEST 2007
BUILD SUCCESSFUL (total time: 0 seconds)



Indlæg senest redigeret d. 09.04.2007 16:13 af Bruger #10724
5 svar postet i denne tråd vises herunder
1 indlæg har modtaget i alt 1 karma
Sorter efter stemmer Sorter efter dato
JavaBog er ikke helt opdateret.
Date objektet bruges ikke mere, i stedet bruger man Calender.
Din opgave kunne se således ud:
Fold kodeboks ind/udKode 


Men lige til dit problem, kan jeg ikke se hvorfor det ikke skulle virke :(



Jeg ved ikke ret meget om Java, men problemet kunne være at 365*86400000 er for stort et tal til at kunne være i en int.



Det er en long han bruger.
En long kan rumme fra -9.223.372.036.854.775.808 til 9.223.372.036.854.775.807 og da der kun er 31.536.000.000ms på et år, burde det ikke være problemet (plus at Date tager tiden i milisekunder fra 1. januar 1970 for at finde tiden, og at lægge et år til burde ikke være et problem)



I C og C++ er resultatet af 365*86400000 en int, uanset om det man assigner til er en long. Jeg troede at det måske var det samme i Java.
Det lader ikke til at være tilfældet, I rest my case...




En lille test:
Fold kodeboks ind/udKode 


Dette "burde" vel skrive det samme de to gange, det gør det ikke.

Derfor:

Fold kodeboks ind/udKode 




t