DateDiff question, need count for 8 hours a day including weekends and holidays

Should be pretty simple really, but I am in brainfart mode this am (pardon the expression), lack of caffeine again, I suppose...

I have two dates (startDate and endDate), they represent when a ticket is opened and closed.  There will be a third field to be used later for 'workTime'.  

For each day (24 hour period) in the dateDiff (including holidays and weekends), I need to add 8 hours, then when I have the final number, I need to subtract the value of the 'workTime' field.

chuck
LVL 5
cwickensAsked:
Who is Participating?
 
cwickensConnect With a Mentor Author Commented:
I found the solution, I am using Telerik's radControls and ended up using dateDiff along with regular math to get the values I wanted.  There is probably a better method, however, this works for what I need.
    Protected Sub Button1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button1.Click
        If Me.RadStartDateTimePicker.IsEmpty Then
            Me.LabelNoStartDate.Text = "Start Date/Time Required"
            Exit Sub
        ElseIf Me.RadStartDateTimePicker0.IsEmpty Then
            Me.LabelNoStartDate.Text = ""
            Me.LabelNoEndDate.Text = "End Date/Time Required"
            Exit Sub
        Else
            ' get start and end date values
            Dim startDate As DateTime = Me.RadStartDateTimePicker.SelectedDate.Value
            Dim endDate As DateTime = Me.RadStartDateTimePicker0.SelectedDate.Value
 
            ' calculate total event minutes
            Dim totalHours As Double = DateDiff(DateInterval.Hour, startDate, endDate)
 
            ' convert total minutes to 8 hour days
            Dim intTotalHours As Double = totalHours / 3
 
            ' get value of work hours and minutes
            Dim intWorkTime As Double = Me.TextBoxWorkTime.Text
 
            ' calculate standby time
            Dim standbyTime As String = intTotalHours - intWorkTime
 
            'check to see if value is positive
            If standbyTime < 0 Then
                Me.LabelNegativeValue.Text = "The Standby Time can not be less than '0', Please check your date/time values"
                Exit Sub
            End If
 
            Me.LabelTotalTime.Text = intTotalHours & " Total Hours"
            Me.LabelStandBy.Text = standbyTime.ToString & " Standby Time"
            Me.LabelWorkTime.Text = intWorkTime.ToString & " Work Time"
            Me.LabelNoEndDate.Text = ""
            Me.LabelNoStartDate.Text = ""
        End If
 
    End Sub

Open in new window

0
 
cwickensAuthor Commented:
It looks like this is only available in MS Project/VBA.  I am using it in a Web App with VB,

Any thoughts on using dateDiff and converting it or a VB example of projectDateDiff?
0
 
cwickensAuthor Commented:
ok, I am making progress...  I can use the dateDIff and return the number of days, hours, minutes and seconds.

I get the result as 3.13:30:00  (3 days, 13 hours, 30 minutes, 0 seconds).  I need to parse that result into: 24 (3 8 hour periods) + 8 (in the 13 hour block)  + .5 (for the 30 minute) = 32.5

ugh....thoughts anyone?
    Protected Sub Button1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button1.Click
        Dim startDate As DateTime = Me.RadStartDateTimePicker.SelectedDate
        Dim endDate As DateTime = Me.RadStartDateTimePicker0.SelectedDate
        Dim totalTime As String = ""
 
        totalTime = endDate.Date.Subtract(startDate).ToString
        Me.LabelTotalTime.Text = totalTime
    End Sub

Open in new window

0
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

All Courses

From novice to tech pro — start learning today.