不允许用户放置“时钟输出”时间< “时钟在”时间?

时间:2011-11-20 02:57:39

标签: c# winforms timespan

    Public void Fee()
    {
        TimeSpan span1 = TimeSpan.FromHours(dtmIn.Value.Hour);
        TimeSpan span2 = TimeSpan.FromHours(dtmOut.Value.Hour);
        TimeSpan span3 = TimeSpan.FromMinutes(dtmIn.Value.Minute);
        TimeSpan span4 = TimeSpan.FromMinutes(dtmOut.Value.Minute);
        TimeSpan span5 = span2.Subtract(span1) + span4.Subtract(span3);

        lblTotal.Text = (span5.TotalHours * 3).ToString("$#.00");

    }

我不希望用户能够在PM期间输入时钟并在AM期间退出(基本上是一夜之间工作)。此外,不允许时钟输出时间在时钟之前。

3 个答案:

答案 0 :(得分:1)

您应该致电new TimeSpan(hours, minutes, seconds: 0)并检查 TimeSpan中的是否> out TimeSpan。

答案 1 :(得分:0)

从您的代码示例中可以看出dtmIndtmOut是可为空的DateTime变量。如果是这样,你所要做的就是:

if (dtmIn.Value >= dtmOut.Value)
{
    //'in' time is equal to or greater than 'out' time
    ... show my error message ...
}

当然你需要确保DateTime?变量有一个值(即在表达式中使用它们之前进行适当的错误检查)。

答案 2 :(得分:0)

你可能需要对你的逻辑更具体一点。你的意思是......

  • 用户应该可以在一夜之间工作?如果是这样,那意味着您需要检查以确保他们输入的日期与他们计时的日期相同。 `

例如......

if (dtmIn.Value.Date != dtmOut.Value.Date) 
{ 
    ... 
}
  • 用户不应该超过24小时工作?如果是这样,您应该减去这两个日期并使用生成的TimeSpan来查看他们工作了多少天。

例如......

if ((dtmOut.Value - dtmIn.Value).TotalDays > 1) 
{
    ... 
}

在任何情况下都不应该明确检查时间。首先,如果我工作25小时,那么我的退房时间仍然是在入住时间之后。