Frågan 6 juni 2002 09:32 #1 Jag vill avrunda en tid i formatet 11.25 till närmaste femte minut.
11.58 ska alltså bli 12.00 och 11.57 ska bli 11.55.
Någon som kan hjälpa mig? :)
Herman Medlem sedan maj 2001 431 inlägg kanske ngt sånt här?
klockslag= "20:02"
minuter = right(klockslag,2)
antalfemmor = int((minuter+2)/5)
If antalfemmor =12 Then
nytt_klockslag = Time(hour(klockslag)+1 & ":00")
Else
nytt_klockslag = Time(hour(klockslag) & ":" & antalfemmor*5)
End If
red: la till villkor om det blir ny timme...
I icaaq Medlem sedan okt. 2000 5 273 inlägg [red]
Function GetRightTime(byVal dteTime)
If IsDate(dteTime) Then
Select Case Right(Minute(dteTime),1)
Case "1" , "6"
GetRightTime = FormatDateTime(DateAdd("n", -1, dteTime),4)
Case "2" , "7"
GetRightTime = FormatDateTime(DateAdd("n", -2, dteTime),4)
Case "3" , "8"
GetRightTime = FormatDateTime(DateAdd("n", 2, dteTime),4)
Case "4" , "9"
GetRightTime = FormatDateTime(DateAdd("n", 1, dteTime),4)
Case Else
GetRightTime = FormatDateTime(dtetime,4)
End Select
Else
Response.Write "Det måste vara ett giltigt datum"
End If
End Function
[/red]
......JAg vet inte hur den funkar vid timmar men jag tror den ska funka..........
Red. Jag la till så du fick rätt format på tiden :)
Massa case satser? :o
Nä, får väl fixa till en egen funktion då...
I icaaq Medlem sedan okt. 2000 5 273 inlägg
Ursprungligen av Erik Juhlin **Massa case satser? :o
Nä, får väl fixa till en egen funktion då...**
Uhh du har ju en funktion som är klockren där ;)
En lite mer generell funktion utan massa case satser...
Function RoundNearestMin(ByVal dDate, ByVal lRoundTo)
dDate = CDate(dDate)
lRoundTo = CLng(lRoundTo)
If lRoundTo <= 60 Then
Dim lHour, lMinute
lHour = Hour(dDate)
lMinute = Minute(dDate)
lMinute = CLng(lMinute / lRoundTo) * lRoundTo
lHour = (lHour + Fix(lMinute / 60)) Mod 24
lMinute = lMinute Mod 60
RoundNearestMin = CDate(Year(dDate) & "-" & Month(dDate) & " " & Day(dDate) & " " & lHour & ":" & lMinute)
End If
End Function
Response.Write RoundNearestMin(CDate("2001-06-06 23:59:23"), 5)
Redigering: Förfinat ett antal gånger. :)
I icaaq Medlem sedan okt. 2000 5 273 inlägg Jag tycker min var finare.... ;)
Du hårdkodar ju in vilket tal den ska adderas/divideras med.
Sen så funkar det inte om man t.ex. vill ha närmaste nionde minut med din. Vill man att det ska funka med det så blir det en jäkla massa hårdkodningar.
Min är mer generell och bättre skriven, så är det. :p
Men kom igen, ni är väl ironiska? :q :o
Herman Medlem sedan maj 2001 431 inlägg klockslag = Time
minuter = Minute(klockslag)
antalfemmor = Int(((minuter) + 2) / 5)
If antalfemmor = 12 Then
nytt_klockslag = Time(Hour(klockslag) + 1 & ":00")
Else
nytt_klockslag = Hour(klockslag) & ":" & Right("0" & CInt(antalfemmor * 5), 2)
End If
red: la till villkor om det blir ny timme + rättade :)
Herman Medlem sedan maj 2001 431 inlägg hehe är det inte lite overkill att kunna avrunda till närmaste 9-minut? Snyggt men är det användbart?
Den funktionen fungerar ju inte särskilt bra. Kan t.ex. Bli 24:00. Finns ej...
Herman Medlem sedan maj 2001 431 inlägg Det är ju inte ens en funktion - mest ett uppkas. men ok då det är ju bara lägga till.
klockslag = CDate("23:59:12")
minuter = Minute(klockslag)
timmar = Hour(klockslag)
antalfemmor = Int(((minuter) + 2) / 5)
If antalfemmor = 12 Then
nytt_klockslag = Hour(timmar + 1) & ":00"
Else
nytt_klockslag = timmar & ":" & Right("0" & CInt(antalfemmor * 5), 2)
End If
I icaaq Medlem sedan okt. 2000 5 273 inlägg Re: Avrunda till närmaste femte minut
Ursprungligen av Erik Juhlin **Jag vill avrunda en tid i formatet 11.25 till närmaste femte minut.
11.58 ska alltså bli 12.00 och 11.57 ska bli 11.55.
Någon som kan hjälpa mig? :)**
Och det var det du fick ;) .....
Herman Medlem sedan maj 2001 431 inlägg En lite mer kompakt version
Function minutintervall(ByVal datum, ByVal intervall)
minutintervall = TimeValue(DateAdd("n", (Int((Minute(datum) + Int(intervall / 2)) / intervall) * intervall - Minute(datum)), Hour(datum) & ":" & Minute(datum)))
End Function
Men jag fick ju en ful äckelfunktion ju... :x
I icaaq Medlem sedan okt. 2000 5 273 inlägg JAg vet inte om jag gillar atityden på denna tråd.........
Sorry, var väl lite ironisk... :)
När jag frågade här så letade jag efter ett smidigt sätt att avrunda tal. Men det finns visst inte. :)