Avatar billede dennism Nybegynder
04. oktober 2007 - 17:21 Der er 6 kommentarer og
1 løsning

Java: antal dage?

Jeg har to datoer i Java som er stringe. De er f.eks:
startDate = "2007-01-01"
endDate = "2007-12-12"

Hvordan kan jeg faa antal dage mellem disse to strenge?
Avatar billede jakoba Nybegynder
04. oktober 2007 - 17:47 #1
se: http://java.sun.com/j2se/1.4.2/docs/api/java/util/GregorianCalendar.html
og  http://java.sun.com/j2se/1.5.0/docs/api/java/util/Scanner.html


Scanner stringScan;                    // bruges til at parse datostrenge

stringScan = new Scanner (startDate);
stringScan.useDelimiter("-");          // forventet format er "yyyy-mm-dd"
int år    = stringScan.next();
int måned = stringScan.next();
int dag  = stringScan.next();
dato1 = new GregorianCalendar( år, måned, dag );

stringScan = new Scanner (endDate);
stringScan.useDelimiter("-");          // forventet format er "yyyy-mm-dd"
int år    = stringScan.next();
int måned = stringScan.next();
int dag  = stringScan.next();
dato2 = new GregorianCalendar( år, måned, dag );

long forskelMillisekunder = dato2.getTimeInMillis() - dato1.getTimeInMillis();
long forskelDage = forskelMillisekunder / (24*60*60*1000);    //NB heltals division
Avatar billede jakoba Nybegynder
04. oktober 2007 - 17:51 #2
Hum, de der stringScan.next() skal da vist specifikt konverteres til integer. og siden der er risiko for foranstillede nuller in måned og dag skal vi også specificere radix.

dvs:
int år    = Integer.parseInt( stringScan.next(), 10 );
int måned = Integer.parseInt( stringScan.next(), 10 );
int dag  = Integer.parseInt( stringScan.next(), 10 );

begge steder
Avatar billede arne_v Ekspert
04. oktober 2007 - 22:10 #3
Jeg ville bruge SimpleDateFormat som i:

        String ds1 = "2007-01-01";
        String ds2 = "2007-12-12";
        DateFormat df = new SimpleDateFormat("yyyy-MM-dd");
        Date d1 = df.parse(ds1);
        Date d2 = df.parse(ds2);
        int nd = (int) ((d2.getTime() - d1.getTime()) / (24 * 60 * 60 * 1000));
Avatar billede dennism Nybegynder
04. oktober 2007 - 22:28 #4
Vi fandt på at lave en replace hvor vi erstattede - med ingen ting. Så castede vi til int og trak dem fra hinanden.

I må gerne smide et svar her!
Avatar billede arne_v Ekspert
04. oktober 2007 - 23:41 #5
Øh ?????????

Det giver da ikke det rigtige resultat.

20071212 - 20070101 er 1111
Avatar billede dennism Nybegynder
05. oktober 2007 - 09:51 #6
Det kan du have ret i ;) tak!
Avatar billede dennism Nybegynder
08. november 2007 - 21:02 #7
Tak for hjælpen. Lukker
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester