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

Posted on 2008-10-15
Last Modified: 2008-11-10
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.

Question by:cwickens
  • 3

Expert Comment

ID: 22719992

Author Comment

ID: 22720135
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?

Author Comment

ID: 22720238
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


Accepted Solution

cwickens earned 0 total points
ID: 22886590
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


            ' 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


Featured Post

Is Your Active Directory as Secure as You Think?

More than 75% of all records are compromised because of the loss or theft of a privileged credential. Experts have been exploring Active Directory infrastructure to identify key threats and establish best practices for keeping data safe. Attend this month’s webinar to learn more.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Suggested Solutions

A publishing tool, a Version Control System, or a Collaboration Platform! These can be some of the defining words for the two very famous web-hosting Git repositories: Bitbucket and Github. Git is widely used amongst the programmers and developers f…
It’s a strangely common occurrence that when you send someone their login details for a system, they can’t get in. This article will help you understand why it happens, and what you can do about it.
As developers, we are not limited to the functions provided by the VBA language. In addition, we can call the functions that are part of the Windows operating system. These functions are part of the Windows API (Application Programming Interface). U…
Get people started with the utilization of class modules. Class modules can be a powerful tool in Microsoft Access. They allow you to create self-contained objects that encapsulate functionality. They can easily hide the complexity of a process from…

863 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

21 Experts available now in Live!

Get 1:1 Help Now