22. maj 2000 - 20:58Der er
20 kommentarer og 1 løsning
function fra dato kl til dato kl "hvor mange timer" (forsat)
Ok, kig på http://www.eksperten.dk/spm.asp?id=17407, for at få der grundlæggende oplysninger. Det jeg godt kunne tænke mig at kunne få det hele ud skrevet i dette format: hh:mm:ss fx "01:23:45" eller 1 time og 23 minutter.
uups. trykkede for hurtigt!! Ok, kig på http://www.eksperten.dk/spm.asp?id=17407, for at få de grundlæggende oplysninger. Det jeg godt kunne tænke mig, er at kunne få det hele ud krevet i disse formater: hh:mm:ss fx "01:23:45" eller 1 time og 23 minutter.
Hmmmmmm........ jeg sad med det samme spørgsmål igår, jeg tror nok at jeg vil gøre følgende.
Dim HoursMinute HoursMinute=DateDiff("n", "#05/22/00 18:37 PM#, "#05/23/00 19:37 PM# HoursMinute indeholder nu antal minutter mellem de to tidspunkter. For at få Timer minutter, kunne en fremgangsmåde være
Private Sub Times_And_Minuttes() Dim HoursMinutte '**********************************************************************' 'Denne procedure skal tages med absolut forbehold, Den er blot beregnet til en ide ' Der skal ligges nogle valideringer og "måske" en helt anden struktur ' men der kan da arbejdes videre fra dette udgangspunkt '*****************************************************************************' HoursMinute = DateDiff("n", #5/23/2000 12:55:00 AM#, #5/23/2000 2:00:00 AM#) '***********Husk at checke og dato2 ikke er mindre en dato1 Dim Times, minutter
MsgBox Times & " Time og " & CInt(minutter) & " Minutter" End If
'***********************' 'kig på koden 'ret den 'svin den til 'gør hvad du vil ' men laver du en brugbar løsning 'så post den lige i spørsmålet ik! :-)
Følgende er nok ikke optimalt - but it gets the job done.
Kør Sub'en TestIt for at se hvordan outputtet bliver.
Function FormatTime(TheFormat As String) As String Dim Pos As Integer Dim FFlag As String Dim CFlag As String TheFormat = TheFormat & "!" For Pos = 1 To Len(TheFormat) CFlag = Mid(TheFormat, Pos, 1) If FFlag = "" Then If CFlag = "#" Then FFlag = "#" Else FormatTime = FormatTime & CFlag End If Else If FFlag = "#" Then FFlag = CFlag ElseIf Left(FFlag, 1) = CFlag Then FFlag = FFlag & CFlag Else Select Case Left(FFlag, 1) Case "h" If Len(FFlag) = 2 And InStr(Pos - 3, Left(TheFormat, 4), ":") > 0 Then FFlag = Left(Hour(Now), Len(FFlag)) If Len(FFlag) = 1 Then FFlag = "0" & FFlag Else FFlag = Left(Hour(Now), Len(FFlag)) End If FormatTime = FormatTime & FFlag Case "m" If Len(FFlag) = 2 And (Right(FormatTime, 1) = ":" Or CFlag = ":") Then FFlag = Left(Minute(Now), Len(FFlag)) If Len(FFlag) = 1 Then FFlag = "0" & FFlag Else FFlag = Left(Minute(Now), Len(FFlag)) End If FormatTime = FormatTime & FFlag Case "s" If Len(FFlag) = 2 And InStr(Pos - 4, Left(TheFormat, 5), ":") > 0 Then FFlag = Left(Second(Now), Len(FFlag)) If Len(FFlag) = 1 Then FFlag = "0" & FFlag Else FFlag = Left(Second(Now), Len(FFlag)) End If FormatTime = FormatTime & FFlag Case "Y" FormatTime = FormatTime & Left(Year(Now), Len(FFlag)) Case "M" FormatTime = FormatTime & Left(Month(Now), Len(FFlag)) Case "D" FormatTime = FormatTime & Left(Day(Now), Len(FFlag)) Case "W" FormatTime = FormatTime & Left(WeekdayName(Weekday(Now, vbMonday)), Len(FFlag)) End Select FormatTime = FormatTime & CFlag FFlag = "" End If End If Next Pos FormatTime = Left(FormatTime, Len(FormatTime) - 1) End Function
Private Sub TestIt() MsgBox FormatTime("Det er idag #WWWWWWW d. #DD/#MM-#YYYY" & vbCrLf & "Klokken er nu #hh:#mm:#ss.") MsgBox FormatTime("#hh:#mm:#ss") MsgBox FormatTime("#hh time(r) og #mm minutter.") End Sub
Det du skal, er at finde ud af, antal minutter, bliver i timer og minutter.
Det gøres ved minutter / 60 så har du antal timer. f. eks 22,33 timer. Nu er problemet så at få de 33 koverteret om til minutter. Jeg har ikke lige en løsning på det, men prøv dig frem med forskellige beregninger. med et eks. Du kender det rigtige resultat af. Jeg stillede jo selv spørgsmålet her i eksperten så jeg må også prøve mig frem. Hilsen Simon
Dette her virker udemærket for mig. Dim dato1 As String Dim dato2 As String dato1 = "22-05-2000 19:00" dato2 = "23-05-2000 20:00"
MsgBox DateDiff("n", dato1, dato2) Du må ligesom også prøve dig frem, det er den eneste måde at lære det på. Der findes eksempler på mange hjemmesider.
Nu er jeg ikke nogen haj til web og hjemmeside programmering, men der findes en masse code på www.netcoders.dk
#mm/dd/yy# er et dato format der bruges i USA. Da det jo er Amerikanere der har opfundet VB...... Kan man altid være sikker på at dette format vil virke hvis man ellers har gjort alt andet rigtigt. Hvid man .feks vil søge i en database fra sit vb program, er det formatet man skal anvende.
Synes godt om
Ny brugerNybegynder
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.