Avatar billede pablo Nybegynder
30. december 2003 - 14:06 Der er 5 kommentarer og
1 løsning

Problem med ugenr.

Hej

Jeg bruger følgende til at finde ugenummeret for dags dato (d. 30. december 2003):

uge = DatePart("ww", date(), vbMonday, vbFirstFourDays)

Dette returnerer uge 1 ?!?! Hvordan kan det mon være? Fjerner jeg "vbFirstFourDays" får jeg uge 53 ?!

Jeg skulle meget gerne få værdien "52" tilbage med dette...
Avatar billede eagleeye Praktikant
30. december 2003 - 14:08 #1
Det er en bug i DatePart som give et forkert uge nr.
Se den beskrevet her samt løsninger på det problem:

http://support.microsoft.com/default.aspx?scid=http://support.microsoft.com:80/support/kb/articles/q200/2/99.asp&NoWebContent=1
Avatar billede eagleeye Praktikant
30. december 2003 - 14:09 #2
Det er faktisk uge 1 i denne uge.
Avatar billede Jman Praktikant
30. december 2003 - 14:24 #3
man kunne vel egentlig "rette fejlen" ved at lave en
if uge = "53"
then uge = "1"
end if
Avatar billede arne_v Ekspert
30. december 2003 - 14:25 #4
Nej - fordi nogen år har uge 53.
Avatar billede hnteknik Novice
30. december 2003 - 14:34 #5
Puha - jeg blev lige bange for at mine kalendre viste forkert, men jeg regner ugen ud vha java script:

                  <%
                          var kaldato=new Date(Y, M-1, 1)
                          var mde = ["Januar","Februar","Marts","April","Maj","Juni","Juli","August","September","Oktober","November","December"];
                          var uge = ["Sø", "Ma", "Ti", "On", "To", "Fr", "Lø"];
                            function DaysInMonth(Month, Year) {
                              var _Date = new Date(Year, Month, 1)
                              var _LastDate = new Date()
                              _LastDate = new Date(_Date)
                              _LastDate.setMonth(_Date.getMonth() + 1)
                              _LastDate.setHours(_LastDate.getHours() - 24)
                              return( _LastDate.getDate())
                            }
                            function yday(y,m,d) {
                          // d = 1..31, m = 0..11, y = xxxx
                          var yd = d + daysInPastMonths[m];
                          if (m > 1) {
                            if (y %  4 == 0) yd++;
                            if (y % 100 == 0) yd--;
                            if (y % 400 == 0) yd++;
                              }
                          return yd;
                          }
                         
                            var daysInPastMonths = new Array(0,31,59,90,120,151,181,212,243,273,304,334);
                         
                          function ugenummer (d,m,y) {
                              var t,wd,yd,thisThursday,week,nY,pY;
                              // d:1..31 m:0..11 y:fircifret årstal
                              //#en dag har samme ugenr som torsdagen i samme uge
                              t = new Date (y,m,d);
                              wd = t.getDay();
                              yd = yday(y,m,d);
                              if (wd == 0) wd = 7;
                              d = d + 4 - wd;
                              yd = yd + 4 - wd;
                              nY = (m == 11); if (nY) nY = (d > 31);
                              pY = (m ==  0); if (pY) pY = (d <  1);
                              if (nY) {
                                m= 0; d= d-31; y++; 
                                yd = yday(y,m,d);
                              } else if (pY) {
                                m=11; d= d+31; y--; 
                                yd = yday(y,m,d);
                              }
                              thisThursday = yd;
                              t = new Date (y,0,1);
                              wd = t.getDay();
                              yd = yday(y,0,1);
                              if (wd > 4) wd = wd - 7;
                              yd = yd + 4  - wd;
                              week = (thisThursday - yd) / 7 + 1;
                              return week;
                          }

                            var nodays = DaysInMonth(kaldato.getMonth(), kaldato.getYear())
                            var _Dato = kaldato;
                            var ugedag;
                          %>
Avatar billede pablo Nybegynder
30. december 2003 - 14:45 #6
Argh! Ja, det er selvfølgelig uge 1 nu. Problemet var, at jeg brugte en anden funktion til at finde året. Så blev dagen i dag sat til at være uge 1 år 2003.

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