Avatar billede krak Nybegynder
16. marts 2004 - 18:48 Der er 16 kommentarer og
1 løsning

Date: Finde næste dag

Jeg har kigget i API'en for Date-klassen og her på eksperten, men nu spørger jeg direkte: 

Er der en slags getNext-metode, der kan returnere den efterfølgende dag for et date-objekt?
Avatar billede arne_v Ekspert
16. marts 2004 - 18:51 #1
Nej - ikke medmindre du kan nøjes med at ligge 24*60*60*1000 millisekunder til.

Brug:

Date -> Calendar
+1 dag
Calendar -> Date
Avatar billede arne_v Ekspert
16. marts 2004 - 18:52 #2
Hvis du kan nøjes med det:

Date d;
Date d2 = new Date(d.getTime() + 24*60*60*1000);
Avatar billede arne_v Ekspert
16. marts 2004 - 18:54 #3
Men altså ellers:

Date d;
Calendar c = new GregorianCalendar();
c.setTime(d);
c.add(Calendar.DAY_OF_YEAR, 1);
Date d2 = c.getTime();
Avatar billede krak Nybegynder
16. marts 2004 - 18:56 #4
hmm... Så bør jeg nok lave min egen dato-klasse, der laver det trick med Date-klassen...

Umiddelbart synes jeg at Date-klassen er meget omstændig.. Er det helt galt antaget?
Avatar billede arne_v Ekspert
16. marts 2004 - 18:59 #5
Date er bare en simpel wrapper omkring antal millisekunder siden et bestemt tidspunkt.
Avatar billede arne_v Ekspert
16. marts 2004 - 19:01 #6
(Gregorian)Calendar er den mere kraftfulde klasse
Avatar billede krak Nybegynder
16. marts 2004 - 19:04 #7
Hvis du skulle lave en kalender, ville du så bruge GregorianCalendar-klassen, eller lave din egen?
Avatar billede arne_v Ekspert
16. marts 2004 - 19:15 #8
Til simpel tid: Date
Til avanceret tid: (Gregorian)Calendar
Til rigtig kalender som i en man sætter op på vægen: egen klasse
Avatar billede krak Nybegynder
16. marts 2004 - 19:48 #9
ok, dvs når der skal bladres mellem dage og de skal sammenlignes(større/mindre end), vil du anbefale egen klasse?

- og ja, du skal nok få dine point ;-)
Avatar billede arne_v Ekspert
16. marts 2004 - 20:05 #10
Nej - til nogle få objekter som repræsentere tidspunkter og skal tælles 1 dag
tilbage eller en ugre frem og sammenlignes så er Calendar perfekt. Men hvis du skal
have en kalender med fødselsdage, påske, jul etc. så tror jeg ikke at et
array af Calendar med 365 elementer er den rette struktur.
Avatar billede krak Nybegynder
16. marts 2004 - 21:06 #11
Tak!
- Et sidste spørgsmål: Hvad hedder det, hvis man gerne vil have Dags Dato ud som et date-objekt?
Avatar billede arne_v Ekspert
16. marts 2004 - 21:08 #12
Date d = new Date();

og

Calendar c = new GregorianCalendar();

sætter begge tiden til "nu".
Avatar billede krak Nybegynder
16. marts 2004 - 21:19 #13
ja, det vil java.util.Date gerne, men java.sql.Date vil have en long-værdi...

Desværre findes den kære valueOf(String s) ikke i util. (den kan lave en JDBC-date(yyyy-mm-dd) om til et Date-object, men findes ikke i util)
De enkelte parsere i util er depricated... øvøv

Hvad er løsningen der?
- sorry jeg stiller så mange spørgsmål for så få point. Jeg vil gerne give dig en håndfuld flere, hvis du vil guide mig igennem dette!
Avatar billede arne_v Ekspert
16. marts 2004 - 21:33 #14
java.util.Date d1 = new java.util.Date();
java.sql.Date d2 = new java.sql.Date(d1.getTime());

lidt bøvlet ja
Avatar billede arne_v Ekspert
16. marts 2004 - 21:37 #15
Iøvrigt indeholder min artikel:
  http://www.eksperten.dk/artikler/141
lidt om konverteringer mellem de forskellige tids typer.
Avatar billede krak Nybegynder
16. marts 2004 - 21:44 #16
Ja, nu er vi vist derude at vende, hvor man bør holde fyraften... Men nu virker det heldigvis!

Jeg siger tak, og giver en sjat ekstra point her:
http://www.eksperten.dk/spm/478227

(En dråbe i dit point-hav, men alligevel...)
Avatar billede arne_v Ekspert
16. marts 2004 - 21:45 #17
Jeg takker
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