Avatar billede driis Nybegynder
16. maj 2001 - 18:10 Der er 3 kommentarer og
2 løsninger

Dag udfra dato

Jeg skal bruge en funktion, der returnerer dagen (Mandag, tirsdag, osv.) udfra en given dato.

Hvordan laver man en sådan?
Avatar billede johnfs Nybegynder
16. maj 2001 - 18:35 #1
Public Function NthDayOfMonth( _
  intMonth As Integer, _
  intYear As Integer, _
  intOccurrence As Integer, _
  intDay As Integer) _
  As Variant
  \' Comments  : Returns the date of the Nth day (Monday, Tuesday, etc.)
  \'            of the month
  \' Parameters: intMonth - month to check
  \'            intYear - year to check
  \'            Note: Always specify the full four digits of the year
  \'            or the code cannot be considered Year 2000 compliant.
  \'            intOccurrence - the occurrence number of the day
  \'            to calculate (1 for first, 2 for second, etc.)
  \'            intDay - the day of the week to calculate (1 for Sunday,
  \'            2 for Monday, etc.)
  \' Returns  : Nth day of month (null if date does not exist)
  \'
  Dim varTempDate As Variant
  Dim intCurrDay As Integer
   
  On Error GoTo PROC_ERR
 
  varTempDate = DateSerial(intYear, intMonth, 1)

  If (intDay > 0) And (intDay < 8) And (intOccurrence > 0) Then
   
    \' Calculate first intDay of the month.
    intCurrDay = Weekday(varTempDate)
   
    If intCurrDay <> intDay Then
     
      If intCurrDay < intDay Then
        varTempDate = varTempDate + (intDay - intCurrDay)
      Else
        varTempDate = varTempDate + (7 + intDay - intCurrDay)
      End If
   
    End If
   
    If intOccurrence > 1 Then
      varTempDate = varTempDate + 7 * (intOccurrence - 1)
     
      If Month(varTempDate) <> intMonth Then
        \' Date goes past month
        varTempDate = Null
      End If
   
    End If
 
  Else
    varTempDate = Null
  End If
   
  NthDayOfMonth = varTempDate

PROC_EXIT:
  Exit Function
 
PROC_ERR:
  MsgBox \"Error: \" & Err.Number & \". \" & Err.Description, , _
    \"NthDayOfMonth\"
  Resume PROC_EXIT
 
End Function
Avatar billede sjensen Nybegynder
16. maj 2001 - 18:36 #2
Jeg mener der findes en funktion Day eller GetDay der ud fra en given dato, returnerer et tal mellem 1 og 7, hvor 1 som regel er Søndag.
Avatar billede joern Nybegynder
16. maj 2001 - 19:01 #3
Yes, det er datepart

dag = DatePart(\"w\", datovalg, 2)

M.v.h.  Jørn
Avatar billede joern Nybegynder
16. maj 2001 - 19:05 #4
Skulle måske tilføje, at datovalg hidrører fra anvendelse af mscal.oxc, men det er jo underordnet.  Se tillige ugenr.  - noget jeg brugte 40 kodelinier til i VB3.

datovalg = kal.Value
  ugenr = DatePart(\"ww\", datovalg, 2, 3)
  dag = DatePart(\"w\", datovalg, 2)

M.v.h.  Jørn
Avatar billede driis Nybegynder
16. maj 2001 - 19:30 #5
johnfs>> Funktionen fungerer, men Datepart er nemmere at bruge, som joern foreslår. Anyways, jeg deler pointene mellem jer.
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