计算两个工作日之间的时间差

hcpbc 2011-04-12 08:31:33
想计算两个日期之间的时间差,但是是要工作日的,应该怎么做呢?
...全文
931 29 打赏 收藏 转发到动态 举报
写回复
用AI写文章
29 条回复
切换为时间正序
请发表友善的回复…
发表回复
hau_ping_li 2011-04-22
  • 打赏
  • 举报
回复
///  <summary>
/// 计算两个日期之间相差的工作日天数
/// </summary>
/// <param name="dtStart">开始日期</param>
/// <param name="dtEnd">结束日期</param>
/// <returns>Int</returns>
public int CalculateWorkingDays(DateTime dtStart, DateTime dtEnd)
{
int count = 0;
for (DateTime dtTemp = dtStart; dtTemp < dtEnd; dtTemp = dtTemp.AddDays(1))
{
// if(dtTemp.DayOfWeek!=DayOfWeek.Saturday&&dtTemp.DayOfWeek!=DayOfWeek.Sunday)
// {
// count++;
// }
count++;
}
return count;
}
hcpbc 2011-04-18
  • 打赏
  • 举报
回复
还在被这个问题烦恼。。。
hcpbc 2011-04-18
  • 打赏
  • 举报
回复
现在只需要剔除周六和周日就好,,但是不知道怎么放进SQL的查询语句中
窗户纸 2011-04-18
  • 打赏
  • 举报
回复
别瞎琢磨了,这些算法在企业中根本行不通,企业运作有可能有调休,有可能部门调休,个人调休,只要算法中有一点不满足,就没法用,所以必须整体考虑,企业甚至部门还要有专人维护企业日历,目前的企业日历没有哪个是完善的。
hcpbc 2011-04-13
  • 打赏
  • 举报
回复
再顶顶,希望有满意的答案
  • 打赏
  • 举报
回复
计算两个时间差值的函数,返回时间差的绝对值: private  string  DateDiff(DateTime  DateTime1,DateTime  DateTime2) 
{ 
string  dateDiff=null; 
try 
{ 
TimeSpan  ts1=new   TimeSpan(DateTime1.Ticks); 
TimeSpan  ts2=new   TimeSpan(DateTime2.Ticks); 
TimeSpan  ts=ts1.Subtract(ts2).Duration(); 
dateDiff=ts.Days.ToString()+"天" 
+ts.Hours.ToString()+"小时" 
+ts.Minutes.ToString()+"分钟" 
+ts.Seconds.ToString()+"秒"; 
} 
catch 
{ 
} 
return  dateDiff; 
} 
hcpbc 2011-04-12
  • 打赏
  • 举报
回复
因为是要在我的SQL语句中加上这个时间差判断,所以不知道怎么把这个时间差的计算给放进去
hcpbc 2011-04-12
  • 打赏
  • 举报
回复
还是q107770540给出的最为接近我想要的
  • 打赏
  • 举报
回复
import java.text.SimpleDateFormat;
import java.util.Date;
public class Test {
/**
* @param args
*/
public static void main(String[] args)
{
String datestr1 ="" ;
String datestr2 ="" ;
String datestr3 ="" ;
try {
java.text.DateFormat df1 = new java.text.SimpleDateFormat("yyyy-MM-dd") ;
java.text.DateFormat df2 = new java.text.SimpleDateFormat("yyyy年MM月dd日 HH点ss分") ;
Date tempDate=new java.util.Date();
datestr1 = df1.format(tempDate) ;//格式化日期
datestr2 = df2.format(tempDate) ;

SimpleDateFormat myFormatter = new SimpleDateFormat("yyyy-MM-dd");
String ymd ="2006-08-07";
Date date1 = myFormatter.parse(ymd);
datestr3 = String.valueOf((tempDate.getTime()-date1.getTime())/(24*60*60*1000));//计算两个日期之间的时间差,本例为计算天数
}
catch (Exception ex) {

}
System.out.println(datestr1);
System.out.println(datestr2);
System.out.println(datestr3);
}
}

hcpbc 2011-04-12
  • 打赏
  • 举报
回复
谢谢大家,特别是q107770540,我刚才说的放到SQL的查询条件的意思是,比如我有个查询语句,我要查询给定的工作日的时间差的数据


select * from table1 where “时间差”>5;

在这里,怎么把那个时间差的函数放进去呀。
yksyuan 2011-04-12
  • 打赏
  • 举报
回复

TimeSpan s = DateTime1 - DateTime2;
s.TotalDays;
q107770540 2011-04-12
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 hcpbc 的回复:]

引用 5 楼 q107770540 的回复:
C# code

void Main()
{
DateTime t1=DateTime.Parse("2011-4-1");
DateTime t2=DateTime.Now;
TimeSpan ts=t2-t1;
var total=0;
for(int i=0;i<(int)ts.TotalDays;i++)
{
if(t1……
[/Quote]
那就将VAR改成INT
看来你是.NET2.0
q107770540 2011-04-12
  • 打赏
  • 举报
回复

create table SatSun2([id] int identity(1,1),[date] datetime,[weekday] char(6))
go
declare @datetime datetime,@weekday char(6)
set @datetime='2010-1-1'
while @datetime<='2010-12-31'
begin
select @weekday=datename(weekday,@datetime)
if @weekday NOT IN ( 'Saturd' ,'Sunday') insert SatSun2([date],[weekday]) values(@datetime,@weekday)
select @datetime=dateadd(day,1,@datetime)
end
go
select * from satsun2
drop table satsun


http://blog.csdn.net/q107770540/archive/2010/08/11/5803245.aspx
hcpbc 2011-04-12
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 q107770540 的回复:]
C# code

void Main()
{
DateTime t1=DateTime.Parse("2011-4-1");
DateTime t2=DateTime.Now;
TimeSpan ts=t2-t1;
var total=0;
for(int i=0;i<(int)ts.TotalDays;i++)
{
if(t1.AddDays(i).DayOfW……
[/Quote]


var total=0;
系统提示找不到类型或者命名空间“VAR”
deepmist 2011-04-12
  • 打赏
  • 举报
回复
需要用到一张特殊日期表,在相减时查看对应的时间段是否有休息日
秋色之美 2011-04-12
  • 打赏
  • 举报
回复
你的工作日是指星期一至星期五,还是除假期的日子(比如节假日,可能每个厂的假日都不一样)

如果是第一种情况,那用5楼就可以了,
第二种情况, 得建一个工作日历
hcpbc 2011-04-12
  • 打赏
  • 举报
回复
我需要的是“工作日”的时间差,只有5楼的符合要求哦,,还有就是我要把这个写到SQL语句中的查询条件中去,应该怎么写呢?
q107770540 2011-04-12
  • 打赏
  • 举报
回复

void Main()
{
DateTime t1=DateTime.Parse("2011-4-1");
DateTime t2=DateTime.Now;
TimeSpan ts=t2-t1;
var total=0;
for(int i=0;i<(int)ts.TotalDays;i++)
{
if(t1.AddDays(i).DayOfWeek!=DayOfWeek.Saturday &&t1.AddDays(i).DayOfWeek!=DayOfWeek.Sunday)
{
total++;
}
}
Console.WriteLine(total); //7
}
风之影子 2011-04-12
  • 打赏
  • 举报
回复

TimeSpan ts = System.DateTime.Now.AddDays(5).Subtract(System.DateTime.Now);
MessageBox.Show(ts.Days.ToString());
freeboy827 2011-04-12
  • 打赏
  • 举报
回复
timespan 然后把周末和节假日的时间减掉
加载更多回复(5)

111,125

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Creator Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧