我在人力资源项目中,我需要为员工定义Shift Shift有两个用于读卡的游戏,Swipein和swipeOut。我使用两个datetimepicker,格式为time,showupdown为true,设置滑动进出时间 并阅读如下
public void calculateduration()
{
TimeSpan swipein = dtp_toTime.Value.TimeOfDay;
TimeSpan swipeout = dtp_FromTime.Value.TimeOfDay;
TimeSpan duration = dtp_toTime.Value.TimeOfDay - dtp_FromTime.Value.TimeOfDay;
MessageBox.Show(duration.ToString());
}
在我的SQL服务器数据库中,我将所有这三个feilds swipein,swipeout,duration作为Time数据类型,我想在那里插入这些值
为了测试,我给出了四个值
Swipein Swipeout Duration(显示输出) 上午8点,下午4点,8小时>>>>>当天的第二天班次
下午3点10点8小时>>同一天的夜晚狡猾的
晚上10点6点(次日)-16小时>>> prblm..8必须来这里
任何想法都会 或者任何人都可以告诉我一个想法,检查收到的持续时间是否为负值,如
if(duration <0)
{
duration= 24-duration;
}
答案 0 :(得分:2)
您可以在减去它们之前检查它们:
TimeSpan duration;
if (swipeout >= swipein) {
duration = swipeout - swipein;
} else {
duration = swipeout + new TimeSpan(1, 0, 0, 0) - swipein;
}
答案 1 :(得分:0)
问题在于TimeSpan结构旨在表示时间间隔,而不是特定时间。因此,在这种情况下,使用TimeSpan持续时间是有道理的,但是更好地用DateTime表示swipein和swipeout。
public void calculateduration()
{
DateTime swipein = dtp_toTime.Value;
DateTime swipeout = dtp_FromTime.Value;
TimeSpan duration = swipeout - swipein;
MessageBox.Show(duration.ToString());
}
(当然,这假设dtp_ToTime.Value和dtp_FromTime.Value是DateTimes,但我猜他们是......)