/ Forside / Teknologi / Udvikling / Java / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
Java
#NavnPoint
molokyle 3688
Klaudi 855
strarup 740
Forvirret 660
gøgeungen 500
Teil 373
Stouenberg 360
vnc 360
pmbruun 341
10  mccracken 320
Antal dage
Fra : Duca


Dato : 30-01-02 18:18

Hej !

Hvis jeg har 2 stringe, der repræsentere en dato og har formatet yyyymmdd,
hvordan finder jeg lettes det antal dage er er imellem dem?

Mvh

- Christoffer



 
 
Niels (30-01-2002)
Kommentar
Fra : Niels


Dato : 30-01-02 20:12

Duca wrote:

> Hej !
>
> Hvis jeg har 2 stringe, der repræsentere en dato og har formatet yyyymmdd,
> hvordan finder jeg lettes det antal dage er er imellem dem?
>
> Mvh
>
> - Christoffer
>
>
>

parse skittet til integer og pil dem ud hver for sig, og test det ....

/niels


Filip Larsen (30-01-2002)
Kommentar
Fra : Filip Larsen


Dato : 30-01-02 20:55

Duca skrev

> Hvis jeg har 2 stringe, der repræsentere en dato og har formatet yyyymmdd,
> hvordan finder jeg lettes det antal dage er er imellem dem?

Hvad med noget så som følgende utestede stump:

import java.text.SimpleDateFormat;

public Class DaysBetween {
public static void main(String args[])
{
try {
SimpleDateFormat df = new SimpleDateFormat("yyyyMMDD");
long days = (Math.abs(df.parse(args[0]).getTime()-
df.parse(args[1]).getTime())
+12*3600*1000L)/24*3600*1000L;
System.out.println("days between = " + days);
} catch (Exception ex) {
System.err.println(ex);
}
}
}


Jeg lægger 12 timer til forskellen for at sikre mod, at forskellig
vintertid/sommertid mellem de to datoer ikke giver afrundingsfejl.


Mvh,
--
Filip Larsen <filip.larsen@mail.dk>



Duca (30-01-2002)
Kommentar
Fra : Duca


Dato : 30-01-02 21:26

Hej !
Tak for hjælpen til jer alle, jeg splejsede lidt fra jeg alle og kom frem
til :
////////////////////////////
public int DatoDif(String mstart, String mslut)
{
oostart = mstart.substring(0,4);
int styy = Integer.valueOf(oostart).intValue();;
oostart = mstart.substring(5,6);
int stmm = Integer.valueOf(oostart).intValue();;
oostart = mstart.substring(6,8);
int stdd = Integer.valueOf(oostart).intValue();;

ooslut = mslut.substring(0,4);
int slyy = Integer.valueOf(ooslut).intValue();;
ooslut = mslut.substring(5,6);
int slmm = Integer.valueOf(ooslut).intValue();;
ooslut = mslut.substring(7,8);
int sldd = Integer.valueOf(ooslut).intValue();;



start=new GregorianCalendar(styy,stmm,stdd);
stop=new GregorianCalendar(slyy,slmm,sldd);

long dif=stop.getTime().getTime()-start.getTime().getTime();
antald=(int)(dif/1000/60/60/24);

return antald;
}
/////////////////////
Dog har jeg er spørgsmål til som jeg håber i kan hjælpe mig med, jeg skal
ligge et døgn til en dato det gør jeg vha.
dt.add(Calendar.HOUR, 24);
dt er GregorianCalender, operation går udemærket indtil jeg skal skift mdr.
ex. hvis jeg ønsker at lægge 3 dage til den 27. januar 2002 får jeg
(yyyymmdd) :
20020128
20020201
20020202
Hvad gør jeg galt??

Mvh

- Christoffer



Max Rotvel (30-01-2002)
Kommentar
Fra : Max Rotvel


Dato : 30-01-02 22:10

In article <a39kro$p7o$1@news.cybercity.dk>,
ask@news.dk says...

> Dog har jeg er spørgsmål til som jeg håber i kan hjælpe mig med, jeg skal
> ligge et døgn til en dato det gør jeg vha.
> dt.add(Calendar.HOUR, 24);

HOUR (Og HOUR_OF_DAY) virker ikke helt som man
tror den gør . Konverter til minutter istedet
for:

dt.add(Calendar.MINUTES, 24 * 60)
--
Max

Peter Lind (31-01-2002)
Kommentar
Fra : Peter Lind


Dato : 31-01-02 00:11


"Duca" <ask@news.dk> wrote in message news:a39kro$p7o$1@news.cybercity.dk...
> Hej !
[snip]
> Dog har jeg er spørgsmål til som jeg håber i kan hjælpe mig med, jeg skal
> ligge et døgn til en dato det gør jeg vha.
> dt.add(Calendar.HOUR, 24);
> dt er GregorianCalender, operation går udemærket indtil jeg skal skift
mdr.
> ex. hvis jeg ønsker at lægge 3 dage til den 27. januar 2002 får jeg
> (yyyymmdd) :
> 20020128
> 20020201
> 20020202
> Hvad gør jeg galt??

Fejlen, hvis man kan kalde den det, er at måneder i Calendar starter med 0
for januar, 1 for februar og så videre. Så du starter faktisk med den 27.
februar 2002, den næstsidste dag i måneden.

Det virker irriterende at måneder har 'forkerte' numre, men det er meget
rart når man f.eks har en String måneder[12] = {"januar", "februar",
"marts", "a.... og så videre.

mvh
Peter Lind



Soren 'Disky' Reinke (31-01-2002)
Kommentar
Fra : Soren 'Disky' Reinke


Dato : 31-01-02 08:53


"Duca" <ask@news.dk> skrev i en meddelelse
news:a39kro$p7o$1@news.cybercity.dk...
> Hej !
> Tak for hjælpen til jer alle, jeg splejsede lidt fra jeg alle
og kom frem
> til :
> ////////////////////////////
> public int DatoDif(String mstart, String mslut)
> {
> oostart = mstart.substring(0,4);
> int styy = Integer.valueOf(oostart).intValue();;
> oostart = mstart.substring(5,6);
> int stmm = Integer.valueOf(oostart).intValue();;
> oostart = mstart.substring(6,8);
> int stdd = Integer.valueOf(oostart).intValue();;
>
> ooslut = mslut.substring(0,4);
> int slyy = Integer.valueOf(ooslut).intValue();;
> ooslut = mslut.substring(5,6);
> int slmm = Integer.valueOf(ooslut).intValue();;
> ooslut = mslut.substring(7,8);
> int sldd = Integer.valueOf(ooslut).intValue();;
>

Brug simpleDateFormatter istedet :)

--
With many Thanks

Soren ' Disky ' Reinke ICQ #1413069
http://www.disky-design.dk/fish
Remove IHSYD from email address when replying by email




Duca (31-01-2002)
Kommentar
Fra : Duca


Dato : 31-01-02 11:57

Tusind tak for hjælpen til jer alle!

Nu virker det (næsten) alt sammen.
Men hvordan kan det være at man ikke har gjort det samme med selve datoen
som med mdr., altså trukket en fra?
...og hvordan kan det være at dt.add(Calendar.HOUR, 24) ikke er det samme som
dt.add(Calendar.MINUTES, 24 * 60) ?

Endnu en gang tak!

- Christoffer







Max Rotvel (30-01-2002)
Kommentar
Fra : Max Rotvel


Dato : 30-01-02 20:55

In article <3c582a3b$0$230
$edfadb0f@dspool01.news.tele.dk>, ask@news.dk
says...

> Hvis jeg har 2 stringe, der repræsentere en dato og har formatet yyyymmdd,
> hvordan finder jeg lettes det antal dage er er imellem dem?

Jeg ved ikke om det er den letteste metode, men du
kan ihvertfald parse strengene så du kan oprette
to GregorianCalendar() objekter og trække dem fra
hinanden. Noget i den her stil:

import java.util.*;
....
GregorianCalendar cal_1 =
new GregorianCalendar(2002, 1, 1);
GregorianCalendar cal_2 =
new GregorianCalendar(2002, 1, 2);

/* Konverter GC objekterne til deres Date og
derefter TimeInMillis representation. Træk dem fra
hinanden, divider res med ms pr dag og fjern evt
minus */

long diff = Math.abs(
(cal_1.getTime().getTime() -
cal_2.getTime().getTime())
/ (24 * 60 * 60 * 1000));

Venlig hilsen
--
Max

Søg
Reklame
Statistik
Spørgsmål : 177501
Tips : 31968
Nyheder : 719565
Indlæg : 6408523
Brugere : 218887

Månedens bedste
Årets bedste
Sidste års bedste