Avatar billede clemmensen Nybegynder
27. november 2002 - 16:27 Der er 6 kommentarer og
1 løsning

dato på mandag i en given uge

Jeg sidder og bakser med en metode der skal ta' et tal og returnere datoen på mandagen i det pågældene ugenummer. Jeg har sjusset mig frem til:

public static String Week(int next){
      Calendar ref = GregorianCalendar.getInstance();
      ref.roll(GregorianCalendar.WEEK_OF_YEAR, next);
      int dayofweek = ref.get(Calendar.DAY_OF_WEEK);
      int day = ref.get(GregorianCalendar.DAY_OF_MONTH);
      int month = ref.get(GregorianCalendar.MONTH);
      String date = (String.valueOf(2+(day-dayofweek)) + "/" + String.valueOf(month+1));
      return date;
}

Men det dur jo kun for i år. Hvordan får jeg det til at virke for "fremtiden"? Der må også være en pænere måde at få det korrekte resultat end den måde jeg har gjort det på (læg lidt til og træk lidt...) Forslagene må meget gerne være rettet ind i den vedlagte kode.
På forhånd tak!
Avatar billede disky Nybegynder
27. november 2002 - 16:31 #1
Kald .setYear() med året du ønsker inden du finder de oplysniger du ønsker.
Avatar billede clemmensen Nybegynder
27. november 2002 - 16:56 #2
Er der ikke en måde hvor jeg kan roll'e et antal uger frem og året så skifter hvis jeg går ind i et senere år?
Avatar billede arne_v Ekspert
27. november 2002 - 16:56 #3
package test;

import java.util.Calendar;
import java.util.GregorianCalendar;

public class Monday {

    public static String weekdate(int week, int year) {
        Calendar ref = new GregorianCalendar();
        ref.clear();
        ref.set(GregorianCalendar.YEAR, year);
        ref.set(GregorianCalendar.WEEK_OF_YEAR, week);
        ref.set(GregorianCalendar.DAY_OF_WEEK, GregorianCalendar.MONDAY);
        int day = ref.get(GregorianCalendar.DAY_OF_MONTH);
        int month = ref.get(GregorianCalendar.MONTH);
        return (day + "/" + month);
    }

    public static void main(String[] args) {
        for (int i = 40; i < 50; i++) {
            System.out.println(i + " : " + weekdate(i, 2002));
        }
    }
}
Avatar billede arne_v Ekspert
27. november 2002 - 16:58 #4
Jeg tror ovenstående løser dit problem på en
rimelig generel måde.

Bemærk at clear er nødvendig !
Avatar billede clemmensen Nybegynder
27. november 2002 - 17:16 #5
Jeg har selv lavet præcist det samme. Det kunne dog være rart hvis at YEAR blev opdateret automatisk...
Avatar billede arne_v Ekspert
27. november 2002 - 17:20 #6
Det må blive noget i retning af (pseudo kode):

if week < current_week then
  year = current_year + 1
else
  year = current_year
endif
Avatar billede clemmensen Nybegynder
27. november 2002 - 17:50 #7
Den har jeg faktisk også tænkt på selv :o) Problemet er så bare at variablen next også gerne må ta' imod negative tal (altså at ugerne kan tælles tilbage). Jeg finder nok en løsning på det. Men tak for hjælpen!
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