0

例如,如果今天是星期一或星期二,并且与当前系统时间相比,如果他的日程安排在(给定的)时间范围内,则用户可以查看他的密码,但即使今天是星期一或星期二,如果他的给定时间是,假设下午 1:30-5:30,还没有或已经过了那个时间,他将无法查看他的密码。

我希望你能得到练习。下面的代码可以正常工作,但是,如果我把同一天放两次,比如周二和周二,就会发生冲突。如何修复此条件语句?谢谢。

这是我的代码:

DateTime systemtime = DateTime.Now;
DateTime timestart = Convert.ToDateTime(txtTimestart.Text);
DateTime timeend = Convert.ToDateTime(txtTimeend.Text);
var systemday = DateTime.Now.DayOfWeek.ToString();
var day1 = Convert.ToString(txtDay1.Text);
var day2 = Convert.ToString(txtDay2.Text);

if (systemday != day1 || systemday != day2)
{
    if (systemtime < timestart || systemtime > timeend)
    {
        MessageBox.Show("You are not authenticated to view your password.", "Get Password Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
        return;
    }
    else
    {
        MessageBox.Show("Your password is ...", "Get Password Success", MessageBoxButtons.OK, MessageBoxIcon.None);
        return;
    }
}
else
{
    if (systemtime < timestart || systemtime > timeend)
    {
        MessageBox.Show("You are not authenticated to view your password.", "Get Password Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
        return;
    }
    else
    {
        MessageBox.Show("Your password is ...", "Get Password Success", MessageBoxButtons.OK, MessageBoxIcon.None);
        return;
    }
}
4

1 回答 1

2

以您为例,这行代码的意思是:如果当前日期(系统日)不是星期一或不是星期二

if (systemday != day1 || systemday != day2)

现在,如果今天是星期二,那么第一个比较为真的不是星期一,它将进入 if 块。如果今天是星期一,则不是星期二,这使得第二次比较 (Systemday != day2) 为真。如果今天不是星期一和星期二,那么它使两个比较 (systemday != day1 || systemday != day2) 都为真。简而言之,您的代码永远不会落入 else 中。

现在为您的问题使用

if (systemday == day1 || systemday == day2)
{ 
    if(systemtime>=timestart && systemtime <=timeend)
    {
        MessageBox.Show("Your password is ...", "Get Password Success", MessageBoxButtons.OK, MessageBoxIcon.None);
        return;
    }
    else
    {
        MessageBox.Show("You are not authenticated to view your password.", "Get Password Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
        return;
    }
}
于 2012-07-21T05:49:41.033 回答