日期:2014-05-17  浏览次数:20404 次

求解:C# 时间的加减运算【一个去年的随机日期2014/1/9 15:58:38 距离当前今天多少天,周六日不计算在内。
求当前时间减去 去年的一个随见时间或者今年的某个时间(中间不包括周六日)


大家有什么好的方法啊。
------解决方案--------------------


public int TotalWorkday(DateTime AStart, DateTime AEnd) 
 { 
 TimeSpan vTimeSpan = new TimeSpan(AEnd.Ticks - AStart.Ticks); 
 // 跨度多少个星期,每个星期5个工作日 
int Result = ((int)vTimeSpan.TotalDays / 7) * 5; 

 // 计算余下的日期中的工作日 
for (int i = 0; i <= vTimeSpan.TotalDays % 7; i++) 
 switch (AStart.AddDays(i).DayOfWeek) 
 { 
 case DayOfWeek.Saturday: 
 case DayOfWeek.Sunday: 
 break; 
 default: 
 Result++; 
 break; 
 } 
 return Result; 
 } /* TotalWorkday */ 

 private void button1_Click(object sender, EventArgs e) 
 { 
 Text = TotalWorkday(new DateTime(2007, 4, 6), 
 new DateTime(2007, 4, 11)).ToString(); 
 } 


------解决方案--------------------
个人思路:
除7算法

假设星期一到星期日分别标识为1-7
凑够7天-2天为一个周期
假设开始日期跟结束日期相差为7的整数 Days, 那么之间的间隔时间就为 Days - (2*Days/7)

有点复杂的就是怎么去凑一个周期,是开始日期去凑还是结束日期去凑
或者直接点判断当前日期是周几,然后开始日期向前凑到周几再减去间隔工作日

具体到时间的话,不知道能不能直接用时间判断是否满24小时来加减一天

如有错误请指正