QuidMedlem sedan juni 20006 022 inläggFrågan#1 Jag är ute efter en funktion som räknar ner arbetstid till nästa helg.
Jag jobbar 8-17, lunch mellan 12 och 13.
Jag vill ha det i formatet: Det är X timmar, x minuter och x sekunder kvar till helg.
Någon som orkar knåpa ihop en sån funktion? :)
(ps. jag gör det iaf inte)
SSebbeMedlem sedan jan. 20032 285 inlägg Är till 99% säker på att den stämmer. ;)
<%
Function WorkTime(dtmDate)
intTime = CDate(Hour(dtmDate) & ":" & Minute(dtmDate) & ":" & Second(dtmDate))
intWeekday = Weekday(dtmDate, vbMonday)
If intWeekday = 7 Then intWeekday = 6
intDays = 6 - intWeekday
intSeconds = intDays * 8 * 3600
If intTime => CDate("8:00:00") AND intTime =< CDate("12:00:00") Then
intSeconds = intSeconds - (((Hour(intTime) - 8) * 3600 + (Minute(intTime) * 60) + Second(intTime)))
ElseIf intTime => CDate("13:00:00") AND intTime =< CDate("17:00:00") Then
intSeconds = intSeconds - (((Hour(intTime) - 9) * 3600 + (Minute(intTime) * 60) + Second(intTime)))
End If
intHours = Int(intSeconds / 3600)
intMinutes = Int((intSeconds - intHours * 3600) / 60)
intSeconds = intSeconds - ((intHours * 60 + intMinutes) * 60)
WorkTime = intHours & " timmar, " & intMinutes & " minuter och " & intSeconds & " sekunder kvar till helgen."
End Function
Response.Write(WorkTime(Now()))
%>
/red En liten ändring bara.
QuidMedlem sedan juni 20006 022 inläggVerkar funka kanon, tack som fan.
En liten sak bara, varje gång klockan är efter 17:00 så visar den 40 timmar.
SSebbeMedlem sedan jan. 20032 285 inlägg Skriv om If-satsen till det här så ska det nog funka. :)
If intTime => CDate("8:00:00") AND intTime =< CDate("12:00:00") Then
intSeconds = intSeconds - (((Hour(intTime) - 8) * 3600 + (Minute(intTime) * 60) + Second(intTime)))
ElseIf intTime => CDate("13:00:00") AND intTime =< CDate("17:00:00") Then
intSeconds = intSeconds - (((Hour(intTime) - 9) * 3600 + (Minute(intTime) * 60) + Second(intTime)))
ElseIf intTime > CDate("17:00:00") AND intWeekday < 6 Then
intSeconds = intSeconds - 8 * 3600
End If
/red Klantade till det lite grann, men nu är det nog rätt. :)
/red2 Eller inte... Nu så ska det funka! ;)
QuidMedlem sedan juni 20006 022 inläggFunkar kanon, tack som fan!
SSebbeMedlem sedan jan. 20032 285 inlägg Tyvärr inte riktigt perfekt.
Har ändrat lite i funktionen nu, så jag skriver hela den "nya" funktionen den här gången.
Function WorkTime(dtmDate)
intTime = CDate(Hour(dtmDate) & ":" & Minute(dtmDate) & ":" & Second(dtmDate))
intWeekday = Weekday(dtmDate, vbMonday)
If intWeekday => 6 Then
WorkTime = "Det är ju helg nu!"
Exit Function
End If
intDays = 6 - intWeekday
intSeconds = intDays * 8 * 3600
If intTime => CDate("8:00:00") AND intTime =< CDate("12:00:00") Then
intSeconds = intSeconds - (((Hour(intTime) - 8) * 3600 + (Minute(intTime) * 60) + Second(intTime)))
ElseIf intTime => CDate("13:00:00") AND intTime =< CDate("17:00:00") Then
intSeconds = intSeconds - (((Hour(intTime) - 9) * 3600 + (Minute(intTime) * 60) + Second(intTime)))
ElseIf intTime > CDate("17:00:00") Then
intSeconds = intSeconds - 8 * 3600
End If
intHours = Int(intSeconds / 3600)
intMinutes = Int((intSeconds - intHours * 3600) / 60)
intSeconds = intSeconds - ((intHours * 60 + intMinutes) * 60)
WorkTime = intHours & " timmar, " & intMinutes & " minuter och " & intSeconds & " sekunder kvar till helgen."
End Function
OOveRRidEMedlem sedan feb. 200112 078 inlägg Markera gärna det svar som bidrog till lösningen som slutgiltigt.