考勤时间计算方法探讨
2011-04-01 21:54
330 查看
private void btnSeek_Click(object sender, EventArgs e)
{
int totalCount = getCalcCount(timeFrom.Time, timeTo.Time);
DateTime tempTime=timeFrom.Time;
double Y = 0;
double R = 0;
double D = 0;
for (int i = 0; i < totalCount; i++)
{
if (chkNight.Checked)
{
if (!isInNightBanCi(tempTime))
{
if (isNightWork(tempTime))
{
Y = Y + 0.5;
}
else
{
R = R + 0.5;
}
}
else
{
D =D+ 0.5;
}
}
else
{
if (!isInDayBanCi(tempTime))
{
if (isNightWork(tempTime))
{
Y = Y + 0.5;
}
else
{
R = R + 0.5;
}
}
else
{
D = D + 0.5;
}
}
tempTime = tempTime.AddMinutes(30);
}
txtMemo.Text = string.Format("Y={0}; R={1}; D={2}", Y, R,D);
}
int getCalcCount(DateTime d1, DateTime d2)
{
double d=(d2 - d1).TotalMinutes;
if (d < 0)
{
d2 = d2.AddDays(1);
}
return (int)( (d2 - d1).TotalMinutes / 30);
}
bool isInDayBanCi(DateTime d)
{
return DHasInD1_D2(d, Convert.ToDateTime("8:00:00"), Convert.ToDateTime("18:00:00"));
}
bool isInNightBanCi(DateTime d)
{
if (DHasInD1_D2(d, Convert.ToDateTime("0:00"), Convert.ToDateTime("9:00")))
return true;
if (DHasInD1_D2(d, Convert.ToDateTime("20:00"), Convert.ToDateTime("23:59:59")))
return true;
return false;
}
bool isNightWork(DateTime d)
{
return !DHasInD1_D2(Convert.ToDateTime(d.Hour+":"+d.Minute), Convert.ToDateTime("9:00"), Convert.ToDateTime("20:00"));
}
bool DHasInD1_D2(DateTime d, DateTime d1, DateTime d2)
{
d=Convert.ToDateTime(d.Hour+":"+d.Minute);
d1=Convert.ToDateTime(d1.Hour+":"+d1.Minute);
d2=Convert.ToDateTime(d2.Hour+":"+d2.Minute);
if (d1 <= d && d <= d2)
{
return true;
}
else
{
return false;
}
}
{
int totalCount = getCalcCount(timeFrom.Time, timeTo.Time);
DateTime tempTime=timeFrom.Time;
double Y = 0;
double R = 0;
double D = 0;
for (int i = 0; i < totalCount; i++)
{
if (chkNight.Checked)
{
if (!isInNightBanCi(tempTime))
{
if (isNightWork(tempTime))
{
Y = Y + 0.5;
}
else
{
R = R + 0.5;
}
}
else
{
D =D+ 0.5;
}
}
else
{
if (!isInDayBanCi(tempTime))
{
if (isNightWork(tempTime))
{
Y = Y + 0.5;
}
else
{
R = R + 0.5;
}
}
else
{
D = D + 0.5;
}
}
tempTime = tempTime.AddMinutes(30);
}
txtMemo.Text = string.Format("Y={0}; R={1}; D={2}", Y, R,D);
}
int getCalcCount(DateTime d1, DateTime d2)
{
double d=(d2 - d1).TotalMinutes;
if (d < 0)
{
d2 = d2.AddDays(1);
}
return (int)( (d2 - d1).TotalMinutes / 30);
}
bool isInDayBanCi(DateTime d)
{
return DHasInD1_D2(d, Convert.ToDateTime("8:00:00"), Convert.ToDateTime("18:00:00"));
}
bool isInNightBanCi(DateTime d)
{
if (DHasInD1_D2(d, Convert.ToDateTime("0:00"), Convert.ToDateTime("9:00")))
return true;
if (DHasInD1_D2(d, Convert.ToDateTime("20:00"), Convert.ToDateTime("23:59:59")))
return true;
return false;
}
bool isNightWork(DateTime d)
{
return !DHasInD1_D2(Convert.ToDateTime(d.Hour+":"+d.Minute), Convert.ToDateTime("9:00"), Convert.ToDateTime("20:00"));
}
bool DHasInD1_D2(DateTime d, DateTime d1, DateTime d2)
{
d=Convert.ToDateTime(d.Hour+":"+d.Minute);
d1=Convert.ToDateTime(d1.Hour+":"+d1.Minute);
d2=Convert.ToDateTime(d2.Hour+":"+d2.Minute);
if (d1 <= d && d <= d2)
{
return true;
}
else
{
return false;
}
}
相关文章推荐
- 制造业考勤软件计算的方法探讨
- java中的时间计算和格式处理方法
- 计算程序运行时间的方法
- asp.net计算每个页面执行时间的方法
- 图像实时处理常用时间间隔计算方法(微秒级)
- 计算页面执行时间的两种方法
- C++ 计算 代码运行时间的 几种方法
- STM32定时器时间的计算方法
- 一个简单方法完成C#时间间隔的计算
- Java-date的拼接&Calendar的计算&Timestamp时间戳-表示时间的方法
- Android编程计算函数时间戳的相关方法总结
- 一个简单方法完成C#时间间隔的计算
- java中,如何计算一个方法所耗费的时间秒数?
- 时间复杂度计算方法
- 计算剩余时间的方法
- 时间复杂度的概念和计算方法
- C#计算代码执行时间的方法
- 转: 计算程序运行时间的方法
- c/c++在windows下获取时间和计算时间差的几种方法总结
- php中计算时间差的几种方法