2013-03-12 153 views
1

C#用于计算两个日期之间的天数的代码...我有一个文本框的开始日期和另一个文本框的结束日期,我不需要。两天之间的天数,并显示在第三个文本框中,它应该排除假期和周末(星期六和星期日)。用于计算两个日期之间的天数的代码

+3

相关http://stackoverflow.com/questions/1617049/calculate-the-number-of-business-days-between-two-dates – 2013-03-12 07:11:34

+0

哪里是名单假期? – 2013-03-12 07:28:39

+0

如果一天是假期,你是否想用日历来查找?例如在基督教的日历_Good Friday_可能是假期,即使它不是星期六或星期天。 – 2013-03-12 07:31:53

回答

3

您可以解析文本框的日期至日期时间对象,然后尝试以下几行内容。

DateTime startDate = new DateTime(2013, 03, 01); 
DateTime endDate = DateTime.Today; // 12 March 2013 
int totalDays = 0; 
while (startDate <= endDate) 
{ 
    if (startDate.DayOfWeek == DayOfWeek.Saturday 
     || startDate.DayOfWeek == DayOfWeek.Sunday) 
    { 
     startDate = startDate.AddDays(1); 
     continue; 
    } 
    startDate = startDate.AddDays(1); 
    totalDays++; 
} 

Console.WriteLine("Total days excluding weekends: {0}", totalDays); 
+0

如果你想计算包括周末在内的所有日子,我不想使用它。这只能在你不想包括周末的时候使用。 – albertjan 2013-03-12 07:25:49

+0

@albertjan,否则'TimeSpan.TotalDays'属性足以计算两个日期之间的差异。 – Habib 2013-03-12 07:27:18

+0

@albertjan,感谢编辑 – Habib 2013-03-12 07:29:14

2
var dateDiff = FirstDate - SecondDate; 
double totalDays = dateDiff.TotalDays; 
+0

这不会排除周末 – Habib 2013-03-12 07:22:54

1

如果您在文本框即textBox1的1和TextBox

DateTime date1= new DateTime(); 
DateTime date2 = new DateTime(); 
double days; 

bool isDate1Valid =DateTime.TryParse(textBox1.Text, out date1); 
bool isDate2Valid =DateTime.TryParse(textBox2.Text, out date2); 

if(isDate1Valid && isDate2Valid) 
days = (date1-date2).TotalDays; 

编辑

两个日期如果您需要做的是不用循环Here is how to do it.

如果日期差异太大,循环可能会消耗一些额外的时间。

+1

“它应该排除假期和周末(星期六和星期日)。”这就是问题所在。 TotalDays不会排除 – Habib 2013-03-12 07:24:50

+0

@Habib:哦,你是对的..(急速使废物) – Marshal 2013-03-12 07:28:09

1

试试这个..

DateTime startdate = DateTime.Parse("somedate"); 
    DateTime enddate = DateTime.Parse("somedate"); 
    int daycount = 0; 
    while (startdate < enddate) 
    { 
     startdate = startdate.AddDays(1); // Fixed 
     int DayNumInWeek = (int)startdate.DayOfWeek; 
     if (DayNumInWeek != 0) 
     { 
      if (DayNumInWeek != 6) 
      { daycount += 1; } 
     } 
    } 
相关问题