Solved

Find # of hours between 2 dates, excluding weekends, in C#

Posted on 2008-10-27
7
1,369 Views
Last Modified: 2013-11-07
I need to calculate the number of hours a ticket has been, or was open by subtracting 2 dates. All weekend hours need to be excluded. (All in C#) Can someone assist?
0
Comment
Question by:devo00
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
  • 3
  • 2
  • 2
7 Comments
 
LVL 12

Expert Comment

by:jazzIIIlove
ID: 22816701
Hi there;

yes we can...any code snippet you can provide us?

Best regards...
0
 
LVL 12

Expert Comment

by:jazzIIIlove
ID: 22816706
or algorithm?
0
 

Author Comment

by:devo00
ID: 22816761
Sure, so far I only display the flat difference in hours (see snippet). I need to adapt it to exclude weekends.

snippet.txt
0
Space-Age Communications Transitions to DevOps

ViaSat, a global provider of satellite and wireless communications, securely connects businesses, governments, and organizations to the Internet. Learn how ViaSat’s Network Solutions Engineer, drove the transition from a traditional network support to a DevOps-centric model.

 
LVL 3

Expert Comment

by:nullcory
ID: 22817887
Super quick, super dirty.  This calculates days but you could easily modify it to do hours.
I can modify it if you need.
            //Todays Date
            DateTime dt2 = DateTime.Now;
 
            //Previous Date
            DateTime dt = DateTime.Parse("10/15/2008");
 
            //TimeSpan Between Dates
            TimeSpan dt3 = dt2 - dt;
 
            //Count of days not including weekends
            int dayCount = 0;
 
            //1 day timespan
            TimeSpan ts = new TimeSpan(1, 0, 0, 0);
 
            for (int i = 1; i < dt3.Days+1; i++)
            {
                //Today - TimeSpan(1 Day)
                dt2 = dt2.Subtract(ts);
 
                if (dt2.DayOfWeek != DayOfWeek.Saturday && dt2.DayOfWeek != DayOfWeek.Sunday)
                {
                    dayCount++;
                }
               
            }

Open in new window

0
 

Author Comment

by:devo00
ID: 22821384
Yeah I definitely need hours, as in, if someone starts a ticket on Friday and happens to close it on a Saturday, none of the hours from Saturday count, and only the partial day (in hours) for Friday will count.
I'm not seeing a straight-forward way to do this above, would we convert the day count to a decimal and multiply by 24 at the end?
0
 
LVL 3

Accepted Solution

by:
nullcory earned 500 total points
ID: 22824034
I didn't have a chance to fully debug this but it looks like it works.
DateTime dt2 = DateTime.Now;
 
            DateTime dt = DateTime.Parse("10/15/2008");
 
            TimeSpan dt3 = dt2 - dt;
 
            int hourCount = 0;
            int totalHours = 0;
 
            totalHours += dt3.Days * 24;
            totalHours += dt3.Hours;
 
            //1 hour timespan
            TimeSpan hour = new TimeSpan(1, 0, 0);
 
            for (int i = 1; i < totalHours+1; i++)
            {
                dt2 = dt2.Subtract(hour);
 
                if (dt2.DayOfWeek != DayOfWeek.Saturday && dt2.DayOfWeek != DayOfWeek.Sunday)
                {
                    hourCount++;
                }
            }

Open in new window

0
 

Author Closing Comment

by:devo00
ID: 31510525
Excellent, thank you!  It seems to work for every test I've done so far.
0

Featured Post

How Do You Stack Up Against Your Peers?

With today’s modern enterprise so dependent on digital infrastructures, the impact of major incidents has increased dramatically. Grab the report now to gain insight into how your organization ranks against your peers and learn best-in-class strategies to resolve incidents.

Question has a verified solution.

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

Introduction A frequently used term in Object-Oriented design is "SOLID" which is a mnemonic acronym that covers five principles of OO design.  These principles do not stand alone; there is interplay among them.  And they are not laws, merely princ…
This article aims to explain the working of CircularLogArchiver. This tool was designed to solve the buildup of log file in cases where systems do not support circular logging or where circular logging is not enabled
This video teaches users how to migrate an existing Wordpress website to a new domain.
Learn how to set-up custom confirmation messages to users who complete your Wufoo form. Include inputs from fields in your form, webpage redirects, and more with Wufoo’s confirmation options.

734 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