hubertus Mester
26. september 2020 - 19:08 Der er 6 kommentarer og
1 løsning

Datoproblem med Now, når værdien overføres til en funktion

Er der mon en ekspert der kan løse denne knude for mig.  Jeg har et problem med et funktions kald, hvor NOW giver en forkert serial værdi.

dato i dag 26092020  har en serial værdi 44100, men når den overføres til funktionen, så er værdien lngdate = 44101. hvad er årsagen til det?

funktionen returnere true / false afhængig af om det er: hverdag, weekend eller helligdag.

Sub test()
      not_wortking_day = IsHoliday(now, 1, 1)
End Sub

Function IsHoliday(LngDate As Long, InclSaturdays As Boolean, InclSundays As Boolean) As Boolean
       
    ' (optionally included Saturdays/Sundays -  boolsk værdi derfor 0 eller 1 )
   
    ' benytter funksjonen EasterSunday
   
    Dim InputYear As Integer, ES As Long, OK As Boolean
   
    If LngDate <= 0 Then LngDate = Date
   
    InputYear = Year(LngDate)
   
    ES = EasterSunday(InputYear)
   
    OK = True
   
    Select Case LngDate
       
        Case DateSerial(InputYear, 1, 1) ' 1. Nyttårsdag
   
        'Case ES - 4 ' Onsdag før påske
   
        Case ES - 3 ' Skjærtorsdag
   
        Case ES - 2 ' Langfredag
   
        Case ES ' 1. Påskedag
   
        Case ES + 1 ' 2. Påskedag
   
        Case DateSerial(InputYear, 5, 1) ' 1. mai
   
        Case DateSerial(InputYear, 5, 17) ' 17. mai
   
        Case ES + 39 ' Kristi Himmelfartsdag
   
        'Case ES + 48 ' Pinseaften
   
        Case ES + 49 ' 1. Pinsedag
   
        Case ES + 50 ' 2. Pinsedag
   
        'Case DateSerial(InputYear, 12, 24) ' Julaften
   
        Case DateSerial(InputYear, 12, 25) ' 1. Juledag
   
        Case DateSerial(InputYear, 12, 26) ' 2. Juledag
   
        'Case DateSerial(InputYear, 12, 31) ' Nytårsaften
   
        Case Else  ' tjek på lørdag / søndag
   
            OK = False
       
            If InclSaturdays Then
                If Weekday(LngDate, vbMonday) = 6 Then
                    OK = True
                End If
            End If
       
            If InclSundays Then
                If Weekday(LngDate, vbMonday) = 7 Then
                    OK = True
                End If
            End If
       
    End Select
   
    IsHoliday = OK
   
End Function


Function EasterSunday(InputYear As Integer) As Long

' Returns the date for Easter Sunday, does not depend on Excel

Dim d As Integer

d = (((255 - 11 * (InputYear Mod 19)) - 21) Mod 30) + 21

EasterSunday = DateSerial(InputYear, 3, 1) + d + (d > 48) + 6 - ((InputYear + InputYear \ 4 + d + (d > 48) + 1) Mod 7)

End Function
claes57 Ekspert
26. september 2020 - 19:28 #1
og den ved, at du er i Danmark? Hvis pc/win tror, du er i usa, så kan det let skifte...
hubertus Mester
26. september 2020 - 20:08 #2
Hej Claes
koden afvikles på vores erp system, som er et internationalt system, så det er en mulighed. Kan jeg tage højde for det i koden?
hubertus Mester
26. september 2020 - 20:28 #3
Jeg har lige tjekket tidszonen. Den er (UTC+01:00) Brussels, Copenhagen, Madrid, Paris. så det er jo korrekt nok
claes57 Ekspert
27. september 2020 - 09:49 #4
jeg har fundet en lidt kringlet løsning, der først sætter now() til utc i en tekst, og så går videre fra den.
https://powerusers.microsoft.com/t5/Building-Power-Apps/Eastern-Time-Zone-Using-Now-Function/m-p/18331#M7982
Lav en funktion i stil med EasterSunday, så det ikke roder i din kode i øvrigt.
store-morten Ekspert
27. september 2020 - 11:15 #5
NOW indeholde også tid.
Prøv med: TODAY
store-morten Ekspert
27. september 2020 - 12:52 #6
Eller: DATE
hubertus Mester
03. oktober 2020 - 08:16 #7
Date har vist sig at løse mit problem. Hvorfor kan jeg ikke helt gennemskue, men fint at det lykkedes, så tak for hjælpen Morten.
God weekend til jer begge. :-)
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

Opret Preview

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





Premium
Test: Apples nye iPhone er bygget til fart og stil: Så gode er iPhone 12 og iPhone 12 Pro
Computerworld tester: IPhone 12 og iPhone 12 Pro er bygget til fart og til at se godt ud. Varen leveres stilsikkert, men noget er overset i farten.
Computerworld
Salling Group lukker stor online-satsning efter kun et år
Millionsatsningen Fillop lukker ved årets udgang. I stedet er supermarkeds-giganten Salling Group nu på vej med en række helt nye online-satsninger, der er affødt af coronakrisen.
CIO
Podcast: Hos Viking Life-Saving Equipment er it gået fra at være backend til at være noget, som kunderne spørger aktivt efter
Podcast, The Digital Edge: Viking leverer en stadig større del af deres produkt som en tjeneste. Som en del af tjenesten tager Viking ansvar for sikkerheden ved at levere, dokumentere og vedligeholde det nødvendige sikkerhedsudstyr. Hør hvordan Henrik Balslev senior digital director hos Viking har løftet den opgave.
Job & Karriere
Regner din ferie væk? Brug tiden på at søge en af disse otte stillinger, der er ledige netop nu
Det sjasker ned over hele Danmark. Du kan bruge de våde sommerdage på at søge et af disse otte job, der er ledige lige nu.
White paper
Styrk virksomheden med en effektiv omkostningsstrategi
Det har aldrig været mere påkrævet at kaste et kritisk blik på virksomhedens indkøbs- og omkostningsstruktur og undersøge, hvilke processer og aftaler, der kan optimeres. Det gælder både i almindelighed – en optimeret omkostningsstruktur kan trods alt aflæses direkte på bundlinjen. Men det er særligt kritisk for de mange virksomheder, der ser ind i et marked præget af stigende usikkerhed som følge af manglende transparens og af usikkerheden om, hvilke konsekvenser pludselige politiske indgreb kan få for afsætnings- og konkurrencesituationen. Der er eksempelvis store potentielle gevinster at hente ved at bygge velfungerende strukturer omkring indkøb og samarbejde med underleverandører. Blandt andet i form af realtidsbaseret indsigt i omkostningsstrukturen, herunder i potentialet for forbedringer, samt i form af en styrket forsyningskæde.