Avatar billede prebenrunge Nybegynder
24. september 2008 - 18:41 Der er 7 kommentarer og
1 løsning

omregning af uge nr til en dato

jeg har en gammel asp funktion som jeg godt vil have lavet om til en javascript funktion - kan nogen hjælpe ?
udgang punktet er at jeg har en dag, et uge nr og et år,
som jeg vil have omregnet til en dato.

eks. lørdag i uge 39 2008 (dag 6 - uge 39 - år 2008
skulle gerne give den 27-09-2008

funktionen skal tage højde for at 1. januar kan falde i uge 1
og at der i nogle år er 53 uger.
min gamle funktion i asp ser sådan ud:

Function UgeTilDato(aar,uge,dag)
  januar1 = DateSerial(aar, 1, 1)
  ugedagjan1 = Weekday(januar1, vbMonday)
  if ugedagjan1 <= 4 then
      '1. januar er i uge 1
      mandaguge1 = DateAdd("d", -ugedagjan1+1, januar1)
  else
      '1. januar er i sidste uge foregående år
      mandaguge1 = DateAdd("d", 7-ugedagjan1+1, januar1)
  end if

  mandagugex = DateAdd("ww", uge-1, mandaguge1)
  xdagugex = DateAdd("d", dag-1, mandagugex)
  UgeTilDato = xdagugex
End Function
Avatar billede olebole Juniormester
24. september 2008 - 20:34 #1
<ole>

Det kunne se sådan ud:

function getWeekNumber(nD, nM, nY) {
    var oTestDate = (typeof nY!="undefined" && typeof nM!="undefined" && typeof nD!="undefined") ? new Date(nY, nM-1, nD) : new Date();
    var oFirstDate = new Date(oTestDate.getFullYear(), 0, 1);
    return Math.ceil( (oTestDate.getTime()-oFirstDate.getTime())/(7*24*60*60*1000) );
}

getWeekNumber(27-09-2008);

Hvis de tre argumenter udelades, findes ugenummeret for idag. Funktionen er ikke gennemtestet, men synes efter et par hurtige test at være rigtig  =)

/mvh
</bole>
Avatar billede olebole Juniormester
24. september 2008 - 20:40 #2
Ups ... man skal huske at paste seneste version  =)

function getWeekNumber(nD, nM, nY) {
    var oTestDate = (typeof nY!="undefined" && typeof nM!="undefined" && typeof nD!="undefined") ? new Date(nY, nM-1, nD) : new Date();
    var oFirstDate = new Date(oTestDate.getFullYear(), 0, 1);
    return Math.ceil( (oTestDate.getTime()-oFirstDate.getTime())/(7*24*60*60*1000) );
}

var nWeek = getWeekNumber(27,09,2008);
alert(nWeek)
Avatar billede prebenrunge Nybegynder
24. september 2008 - 21:09 #3
Hups - har jeg formuleret det for dårligt.
jeg HAR ugenummeret og skal BRUGE dato

jeg har en lørdag i uge 39 i år og skal bruge datoen for den lørdag ?
Avatar billede olebole Juniormester
24. september 2008 - 21:40 #4
function getFirstDayInWeek(nWeek, nYear) {
    var nDayCoeff = 24*60*60*1000;
    nYear = typeof nYear=="number" ? nYear : new Date().getFullYear();
    var oTestDate = new Date(nYear, 0, 1);
   
    return new Date( (oTestDate.getTime()-((oTestDate.getDay()-1)*nDayCoeff))+((nWeek-1)*(7*nDayCoeff)) );
}

var oDate = getFirstDayInWeek(39);
alert(oDate);
alert(oDate.getDate()+"-"+(oDate.getMonth()+1)+"-"+oDate.getYear());

var oDate = getFirstDayInWeek(39, 2006);
alert(oDate);
alert(oDate.getDate()+"-"+(oDate.getMonth()+1)+"-"+oDate.getYear());
Avatar billede prebenrunge Nybegynder
24. september 2008 - 22:24 #5
Helt perfekt, lige hvad jeg skulle bruge - Tusinde tak.
smider du et svar så jeg kan accepterer svaret
Avatar billede olebole Juniormester
24. september 2008 - 22:33 #6
Jeg har ikke lige tid til at slanke den. Umiddelbart ser den lidt voldsom ud, men jeg har en masse andre koder summende rundt i cellen, så det bliver ikke lige nu, den bliver slanket.

Kommer roenving forbi, vil han sikkert gerne kikke på den. Faktisk tror jeg ikke, han kan undlade. Schhhhh ... du har det ikke fra mig, men han har tenderer asymptotisk mod begrebet 'Date object fetishist'  ;D
Avatar billede olebole Juniormester
24. september 2008 - 22:34 #7
- men du får da forresten lige svaret  =)
Avatar billede olebole Juniormester
24. september 2008 - 23:41 #8
- tak for points  ;o)
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
Vi tilbyder markedets bedste kurser inden for webudvikling

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