Avatar billede bjornhart Nybegynder
21. maj 2007 - 14:36 Der er 3 kommentarer og
1 løsning

Beregning af tillæg

Hej

Jeg har lavet et program som kan udskrive en opgørelse for de vagter jeg har på arbejdet. I den forbindelse vil jeg gerne beregne nogle nat-tillæg og det har jeg lidt problemer med at gøre. Hver vagt bliver lagt i en databasetabel og tabellen består af: titel(string),fra-dato(datetime),til-dato(datetime)
Fra- og til datoerne indeholder naturligvis en dato og et tidspunkt for henholdsvis start og slut af vagten. Vagten kan godt gå over flere dage.

Nattillægget gives i perioden fra kl. 17 til 06 om morgenen.

Hvordan beregner jeg hvor mange timer jeg skal have tillæg for på en enkelt vagt?

Tak på forhånd!
Avatar billede bjornhart Nybegynder
21. maj 2007 - 14:38 #1
Ps. gerne i vb kode
Avatar billede neoman Novice
21. maj 2007 - 15:19 #2
der er en type TimeSpan som indeholder tidsintervaller

Dim diff as TimeSpan
og f.eks.
diff = til-dato - fra-dato

og du kan trække differ ud som dage, timer osv osv - slå den op på msdn

Hvis det var mit problem så ville jeg løse det på følgende måde :
1. Beregn hvor mange tillægstimer der er på startdagen
2. Beregn hvor mange timer der er på slutdagen
3. Beregn hvor mange  dage der er mellem fra-dato.adddays(1).date  og til-dato.date  - antallet af dage x 13 timer vil give dig antallet af tillægstimer


Jeg kan desværre ikke bakse med det lige nu,  men ovenstående burde give dig en start :)
Avatar billede bjornhart Nybegynder
22. maj 2007 - 16:13 #3
Hej neoman. Jeg har nu siddet og rodet lidt med det på et stykke papir for at få hold på funktionen, men uden det store held. Det bliver hurtigt lidt rodet for mig med en masse if-sætninger og derfor ikke særligt elegant. Hvis du får tid og har lyst vil jeg blive glad for et forslag fra dig.
Avatar billede bjornhart Nybegynder
24. maj 2007 - 13:38 #4
Dim vagtdato(2) As Date
        Dim tmpdato As Date
        Dim tillaegstimer As Integer

        vagtdato(0) = "01-01-2007 22:00"
        vagtdato(1) = "02-01-2007 23:00"

        tmpdato = vagtdato(0)

        tmpdato = tmpdato.AddHours(1)
        While tmpdato < vagtdato(1)


            Select Case tmpdato.Hour

                '17- midnat hvor mange timer
                Case 17, 18, 19, 20, 21, 22, 23
                    tillaegstimer = tillaegstimer + 1
                    '01-06 om natten
                Case 0, 1, 2, 3, 4, 5, 6
                    tillaegstimer = tillaegstimer + 1

            End Select

            tmpdato = tmpdato.AddHours(1)


        End While
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
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

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