|
| 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
| |
|
|