Avatar billede jsc Nybegynder
14. februar 2006 - 22:19 Der er 6 kommentarer og
1 løsning

DateAdd problem - skift til ny dag

Hej Eksperter


Jeg har et script, hvor jeg til tider behøver at skifte klokkeslet hen over midnat - altså om på den anden side af klokken 00:00:00 og dermed en ny dag.

Jeg opererer kun med TIME - altså hh:mm:ss og når jeg så anvender DateAdd på et klokkeslet, der overskrider dagen, så kommer denne "fejl":

for klokkeslettet: 23:10:00 (f.eks.):
strtid = DateAdd("h", 1, time)
resultat:
strtid: 31-12-1899 00:10:00
jeg har indset at det er en fejl, der kommer fordi den jo skal skrive en ny dato, og når jeg nu ikke havde en fra start, så må den vel starte forfra!?
Jeg vil gerne have datoen væk, og jeg har prøvet med split() - ligesom et array. Jeg har også prøvet Len(strtid) < 9 og derefter right(strtid, 8) - men det virker sgu ikke.

Hvad gør jeg forkert? og kan det rettes?
Avatar billede cpufan Juniormester
14. februar 2006 - 22:28 #1
eller prøv:

if hour(now)) = 23 then
DateAdd("h",-23,time)
else
  DateAdd("h",1,time)
end if
Avatar billede cpufan Juniormester
14. februar 2006 - 22:29 #2
hov der var en trykfejl

if hour(now()) = 23 then
DateAdd("h",-23,time)
else
  DateAdd("h",1,time)
end if
Avatar billede tofte Juniormester
14. februar 2006 - 22:31 #3
Følgende løser dit problem. Time kan ikke køre over midnat. Men hvis du kan skifte til now() istedet for time kan du løse den sådan

tid = now()
response.Write FormatDateTime(DateAdd("h",2,tid),3)
Avatar billede cpufan Juniormester
14. februar 2006 - 22:32 #4
skal vel egentligt være:

if hour(time) = 23 then
strtid = DateAdd("h",-23,time)
else
strtid = DateAdd("h",1,time)
end if
Avatar billede jsc Nybegynder
15. februar 2006 - 20:37 #5
det er faktisk et meget godt eksempel, det er bare træls at det skal være så langt :(

hvordan laver man iøvrigt halve timer over 00:00:00 ?

    If Hour(Now) = 23 Then
        If Minute(Now) <= 30 Then
            temp = DateAdd("h", -23, time)
            temp = DateAdd("n", -30, temp)
        End If
    Else
    temp = DateAdd("n", 30, time)
    End If

^^ovenstående virker ikke :(
Avatar billede cpufan Juniormester
15. februar 2006 - 21:07 #6
If Hour(Now) = 23 and Minute(Now) > 29 Then
            temp = DateAdd("h", -23, time)
            temp = DateAdd("n", -30, temp)
    Else
    temp = DateAdd("n", 30, time)
    End If
Avatar billede jsc Nybegynder
16. februar 2006 - 16:15 #7
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