两个日期天数差(去掉周六日)??在sqlserver里。
解决方案 »
- winform 如何屏蔽窗体双击事件
- web网站可以接受GPRS发送的数据不?
- webBrowser给下拉列表赋值问题
- 控制时间问题 大家帮忙看下
- 弱弱的问下vs2008 做好的项目发布后要不要在要使用的机器上装数据库呢
- [关于Access数据库问题]数据库中两个字段相乘,使用T-Sql语句不好使,详细如下文
- 关于DATASET的一个问题.
- 还是未引用实例,找不到哪里错了,,
- 如何根据需要改变窗体中的控件?
- 一定给分!!!我用VS.net生成C# WebProject出错!!!!急!
- 求教,如何获取xml文件的最后更新时间
- 本机不安装OFFICE的情况下,在应用程序上实现OFFICE相关的WORD EXCEL导入导出操作
判断2个日期天数差
if(日期差<7)
{
if(datepart(weekday,开始日期)=1 or datepart(weekday,开始日期)=7)
{
return 日期差-1;
if(datepart(weekday,结束日期)=1 or datepart(weekday,结束日期)=7)
{
return 日期差-2;
}
}
else
{return 日期差}
}
else //日期差>=7的情况
{
利用日期差%7的结果,决定周数,再根据上面的思路解决;
}
去除星期六还没想好
2、剩余的循环一下好了算出是几个有效天
两者相加就是了
思路:
(1)返回两日期差
(2)获得两日期中的一个的是星期几,据此算出两日期之间应减多少个周6与周日-----------------------------------------------------
欢迎光临LGX软件园(http://lgxyslldw.512j.com) ◎LgxGrid表格(报表)控件。无论你是初学者还是资深程序员,她都会给你带来意想不到的惊喜! ◎LGX网店管理系统。她,让你可以轻轻松松地组建你的网店,让互联网给你带来无限的商机。 (以上两款软件诚招软件销售代理商。有意者邮[email protected]商谈)
public static int GetWeekOfYear(DateTime dt)
{
CultureInfo ci = CultureInfo.CurrentCulture;
System.Globalization.Calendar cal = ci.Calendar;
CalendarWeekRule cwr = ci.DateTimeFormat.CalendarWeekRule;
DayOfWeek dow = ci.DateTimeFormat.FirstDayOfWeek;
return cal.GetWeekOfYear(dt,cwr,dow);
}
//获得连个日期间的周末天数
public static int WeekDays(string startDate,string endDate)
{
DateTime stDateTime = Convert.ToDateTime(startDate);
DateTime enDateTime = Convert.ToDateTime(endDate); int stWeekOfYear = GetWeekOfYear(stDateTime);
int enWeekOfYear = GetWeekOfYear(enDateTime); int stDayOfWeek = (int)stDateTime.DayOfWeek;
int enDayOfWeek = (int)enDateTime.DayOfWeek; int weekendDays = (enWeekOfYear - stWeekOfYear) * 2; if(stDayOfWeek == 0) weekendDays += 1;
if(enDayOfWeek == 6) weekendDays += 1; return weekendDays;
}
//获得两个日期间的时间间隔
public static int IntervalDays(string startDate,string endDate)
{
DateTime stDateTime = Convert.ToDateTime(startDate);
DateTime enDateTime = Convert.ToDateTime(endDate); int stDayOfYear = stDateTime.DayOfYear;
int enDayOfYear = enDateTime.DayOfYear; int intervalDays = enDayOfYear - stDayOfYear + 1; return intervalDays;
}之前有用到,查了很多资料后整理出来的,希望有用...
remainder = datediff(day,起始日期,结束日期)mod 7
weeknum = datediff(day,起始日期,结束日期)/7 (取整)
start = datepart(weekday,开始日期)
end = datepart(weekday,开始日期) + remainder - 1
sumdays = weeknum*7 + remainder
如果start 和 end数字之间包含1,7,8任何一个数字则sumdays的值减1,
最后结果为sumdays