[JAVA] weeknummers

Pagina: 1
Acties:
  • 137 views sinds 30-01-2008
  • Reageer

  • rrrandy
  • Registratie: Juli 2005
  • Laatst online: 27-06 13:00
Voor een door de gebruiker ingevoerd weeknummer wil ik de datum van de eerste dag bepalen volgens de ISO-standaard, dus:

- eerste week van de dag is maandag
- valt er in de eerste 4 dagen van het jaar een donderdag, dan telt die week als week 1

In mijn voorbeeld hier wil ik de datum van de eerste dag in week 9 van dit jaar pakken (zou maandag 27 februari moeten zijn):

Java:
1
2
3
4
5
6
7
8
9
Calendar calendar = Calendar.getInstance();
calendar.setFirstDayOfWeek(Calendar.MONDAY);
calendar.setMinimalDaysInFirstWeek(4);
calendar.set(Calendar.HOUR_OF_DAY, 0);
calendar.set(Calendar.MINUTE, 0);
calendar.set(Calendar.SECOND, 0);
calendar.set(Calendar.MILLISECOND, 0);
calendar.set(Calendar.YEAR, 2006);
calendar.set(Calendar.WEEK_OF_YEAR, 9);


Wanneer ik via calendar.getTime() de datum afdruk krijg ik:
Tue Feb 28 00:00:00 CET 2006

Ook wanneer ik de calendar aanmaak via:

Java:
1
Calendar calendar = Calendar.getInstance(TimeZone.getTimeZone("GMT+1:00"), new Locale("nl_NL"));


krijg ik dezelfde datum terug. Blijkbaar doe ik toch iets niet goed, maar meer opties voor het bepalen van weeknummers / data heb ik nog niet kunnen vinden.

  • MTWZZ
  • Registratie: Mei 2000
  • Laatst online: 13-08-2021

MTWZZ

One life, live it!

Kun je niet gewoon DateFormat gebruiken zoals in de Java API voorgesteld wordt?
Java:
1
2
3
4
Calendar cl = new Calendar();
Date d = cl.getTime();
DateFormat df = DateFormat.getDateInstance(DateFormat.WEEK_OF_YEAR);
System.out.println("week" + df.format(d));

of iets dergelijks.

Nu met Land Rover Series 3 en Defender 90


  • MetroidPrime
  • Registratie: Oktober 2003
  • Laatst online: 01-11 10:08

MetroidPrime

Turn it up loud, captain!

Volgens mij stel je niet in welke dag van de week je wilt hebben en wordt daarom de huidige dag van de week gebruikt. Je zult dus de volgende regel nog moeten toevoegen:

Java:
1
calendar.set(Calendar.DAY_OF_WEEK, Calendar.MONDAY);


Het is ook verstandig om DateFormat te gebruiken zodat je alleen de datum en niet de tijd meekrijgt.

"Some girl on the street outside the bar just asked me if I was saved yet." "Yeah? What did you say?" "I told her 'I saved at the checkpoint a couple of minutes back and I can reload from there if I die.'


  • rrrandy
  • Registratie: Juli 2005
  • Laatst online: 27-06 13:00
MetroidPrime schreef op dinsdag 07 november 2006 @ 13:00:
Volgens mij stel je niet in welke dag van de week je wilt hebben en wordt daarom de huidige dag van de week gebruikt. Je zult dus de volgende regel nog moeten toevoegen:

Java:
1
calendar.set(Calendar.DAY_OF_WEEK, Calendar.MONDAY);


Het is ook verstandig om DateFormat te gebruiken zodat je alleen de datum en niet de tijd meekrijgt.
Verrek, wat stom |:(

DateFormat is geen optie hier voor mij, ik hoef de datum namelijk niet als String te tonen, maar ik ga op basis van die datum een berekening doen voor een bepaalde periode.