Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/334.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 我有一个在一个月的特定日子弹出的警报,但我需要跳过周末的警报_C#_Asp.net - Fatal编程技术网

C# 我有一个在一个月的特定日子弹出的警报,但我需要跳过周末的警报

C# 我有一个在一个月的特定日子弹出的警报,但我需要跳过周末的警报,c#,asp.net,C#,Asp.net,我如何获得仅在周末跳过的警报?我尝试使用DayOfWeek,但代码似乎没有读取它。 详细代码段:(您可以忽略此代码段,它太详细且过时) 我想知道这个错误到底是什么意思 代码的简短摘要: var alert = false; var currentDay = DateTime.Today; if (DateTime.Now.DayOfWeek.ToString() != "Saturday" || DateTime.Now.DayOfWeek.ToString() != "Sunday") {

我如何获得仅在周末跳过的警报?我尝试使用
DayOfWeek
,但代码似乎没有读取它。 详细代码段:(您可以忽略此代码段,它太详细且过时)

我想知道这个错误到底是什么意思

代码的简短摘要:

var alert = false;
var currentDay = DateTime.Today;

if (DateTime.Now.DayOfWeek.ToString() != "Saturday" || DateTime.Now.DayOfWeek.ToString() != "Sunday")
{
   if (currentDay == DateTime.Today || currentDay == DateTime.Today.AddDays(3))
   {
      alert = true;
   }
   else
   {
      alert = false;
   }
}

if (alert)
{
   ScriptManager.RegisterStartupScript(this, GetType(), "script", "<script language='javascript' type='text/javascript'>alert(\"ALERT MESSAGE\");</script>", false);
} 
var警报=false;
var currentDay=日期时间。今天;
如果(DateTime.Now.DayOfWeek.ToString()!=“周六”| DateTime.Now.DayOfWeek.ToString()!=“周日”)
{
如果(currentDay==DateTime.Today | currentDay==DateTime.Today.AddDays(3))
{
警报=真;
}
其他的
{
警报=假;
}
}
如果(警报)
{
RegisterStartupScript(this,GetType(),“script”,“警报(\“警报消息\”);”,false);
} 
对任何混乱表示歉意。
非常感谢您的帮助,谢谢

我认为问题在于逻辑需要简化;设置警报的情况可能有多个,而不仅仅是一个。此外,如果一周的当前一天是周末,不要应用任何其他逻辑,因为这无关紧要

int staffId = Convert.ToInt32(ddlAssign.SelectedValue);
var staff = BLL.FindStaffByID(staffId);
var alert = false;

var deadline = DateTime.Today;
var day = DateTime.Now.DayOfWeek;
if (!string.IsNullOrEmpty(txtDeadline.Text))
    deadline = Convert.ToDateTime(txtDeadline.Text);

/* Only perform logic if it's not a weekend */
if (day != DayOfWeek.Saturday && day != DayOfWeek.Sunday)
{       
    var bin = new ScheduleBin();
    bin.PackBins(staffId);

    /*Note inclusion of else statement to short circuit the logic */
    if (bin.PercentBusy(1) >= 100 && (deadline == DateTime.Today || deadline == DateTime.Today.AddDays(1)))
    {
        alert = true;
    }
    else if (bin.PercentBusy(3) >= 100 && (deadline == DateTime.Today.AddDays(3)))
    {
        alert = true;
    }
    else if (bin.PercentBusy(5) >= 100 && (deadline == DateTime.Today || deadline == DateTime.Today.AddDays(7)))
    {
        alert = true;
    }

    if (alert)
    {
        ScriptManager.RegisterStartupScript(this, GetType(), "script", "<script language='javascript' type='text/javascript'>alert(\"Whoa there! Looks like " + staff.FirstName + " is a bit booked for that deadline (" + d1 + "% | " + d3 + "% | " + d5 + "%). Check out their task list and talk to the AE's to see about clearing out some room, or consider assigning the task to someone else. \");</script>", false);
    } 
}
int staffId=Convert.ToInt32(ddlsign.SelectedValue);
var staff=BLL.FindStaffyId(staffId);
var警报=错误;
var deadline=日期时间。今天;
var day=DateTime.Now.DayOfWeek;
如果(!string.IsNullOrEmpty(txtDeadline.Text))
deadline=Convert.ToDateTime(txtDeadline.Text);
/*如果不是周末,只执行逻辑*/
如果(天!=星期六和星期日!=星期日、星期日)
{       
var bin=新的ScheduleBin();
包装箱(staffId);
/*注意:包含else语句以使逻辑短路*/
如果(bin.PercentBusy(1)>=100&&(截止日期==DateTime.Today | |截止日期==DateTime.Today.AddDays(1)))
{
警报=真;
}
否则,如果(bin.PercentBusy(3)>=100&&(deadline==DateTime.Today.AddDays(3)))
{
警报=真;
}
如果(bin.PercentBusy(5)>=100&&(截止日期==DateTime.Today | |截止日期==DateTime.Today.AddDays(7)),则为else
{
警报=真;
}
如果(警报)
{
RegisterStartupScript(这个,GETType),“脚本”,“警报”(哇),看起来像“+Fask.FrastNe+”,在最后期限(“+D1+”%+“+D3+”%“+5+”%)被订满了。查看他们的任务列表并与AE对话,以了解清理某个房间,或者考虑将任务分配给其他人。
} 
}
从逻辑上讲,这可以归结为以下几点

var day = DateTime.Now.DayOfWeek;

/* Only perform logic if it's not a weekend */
if (day != DayOfWeek.Saturday && day != DayOfWeek.Sunday)
{
    var deadline = !string.IsNullOrEmpty(txtDeadline.Text)
        ? Convert.ToDateTime(txtDeadline.Text)  
        :DateTime.Today;

    var bin = new ScheduleBin();
    int staffId = Convert.ToInt32(ddlAssign.SelectedValue);
    bin.PackBins(staffId);

    var alert = (bin.PercentBusy(1) >= 100 && (deadline == DateTime.Today || deadline == DateTime.Today.AddDays(1))
        || bin.PercentBusy(3) >= 100 && (deadline == DateTime.Today.AddDays(3))
        || bin.PercentBusy(5) >= 100 && (deadline == DateTime.Today || deadline == DateTime.Today.AddDays(7)));

    if (alert)
    {
        var staff = BLL.FindStaffByID(staffId);
        ScriptManager.RegisterStartupScript(this, GetType(), "script", "<script language='javascript' type='text/javascript'>alert(\"Whoa there! Looks like " + staff.FirstName + " is a bit booked for that deadline (" + d1 + "% | " + d3 + "% | " + d5 + "%). Check out their task list and talk to the AE's to see about clearing out some room, or consider assigning the task to someone else. \");</script>", false); 
    }
}
var day=DateTime.Now.DayOfWeek;
/*如果不是周末,只执行逻辑*/
如果(天!=星期六和星期日!=星期日、星期日)
{
var deadline=!string.IsNullOrEmpty(txtDeadline.Text)
?Convert.ToDateTime(txtDateDate.Text)
:DateTime.Today;
var bin=新的ScheduleBin();
int staffId=Convert.ToInt32(ddlsign.SelectedValue);
包装箱(staffId);
var alert=(bin.PercentBusy(1)>=100&&(deadline==DateTime.Today | | deadline==DateTime.Today.AddDays(1))
||bin.PercentBusy(3)>=100&&(截止日期==DateTime.Today.AddDays(3))
||bin.PercentBusy(5)>=100&&(截止日期==DateTime.Today | |截止日期==DateTime.Today.AddDays(7));
如果(警报)
{
var staff=BLL.FindStaffyId(staffId);
RegisterStartupScript(这个,GETType),“脚本”,“警报”(哇),看起来像“+Fask.FrastNe+”,在最后期限(“+D1+”%+“+D3+”%“+5+”%)被订满了。查看他们的任务列表并与AE对话,以了解清理某个房间,或者考虑将任务分配给其他人。
}
}

我也有类似的东西……试试这样的东西

 private void CheckTime(object sender, EventArgs e)
  {
     switch (DateTime.Now.DayOfWeek.ToString())
     {
        case "Saturday":
           {
              DoSomething();
              break;
           }
        case "Sunday":
           {
              DoNothing();
              break;
           }
     }
  }

弄清楚这一点的一个步骤是将这个日期时间逻辑放在它自己的函数中。根据您希望函数返回的内容仔细命名函数。仔细命名输入。不要在函数中使用
DateTime.Today
。将日期传递到函数中。这将使问题变得更清楚,因为它只是在一个地方。你可能会发现答案就在你眼前。但是如果没有,那么你可以在这里发布这个函数,这样每个人都可以更容易地看到你想要做的事情。你的第二个代码片段没有将dayVal设置为任何特定的值。您的第一个代码片段…不能被任何其他人用来重现您的问题。而且…目的不明,tbh
DayOfWeek
当然有效,所以除非出现时区问题,否则您将看到一个bug。在调试器中单步执行,或者尝试其他人提到的一些简化将是一个良好的开端。在以下
case:“Saturday”case:“Sunday”{alert=false;break;}
中使用一系列case来执行switch case语句:{alert=true;break;}您正在使其变得比应有的更困难,因为上面的dayVal值将是1900-01-01 00:00:00@MethodMan…DayOfWeek是我取出的switch语句,因为我只是将它设置为一个空对象,但我发布它只是为了让大家了解一般的想法。与第一个片段相同。我确信这是不清楚的,因为前半部分是指另一个.cs文件中的一个类,但这些不需要太多考虑,因为我的问题主要是在逻辑上,虽然是的,我确实输入了一些不必要的信息。简而言之,DayOfWeek一直存在问题,因为代码运行除该部分之外的所有内容。我很感谢你的意见!OP表示,如果我正确阅读问题,他们希望跳过周末,因此即使在您的案例陈述中,您也可以堆叠案例:“周六案例:”周日“{break;}它被称为
范围
这似乎不是一个答案是的,我尝试了多次使用switch语句,但出于某种原因,它似乎无法读取指定的星期几
var day = DateTime.Now.DayOfWeek;

/* Only perform logic if it's not a weekend */
if (day != DayOfWeek.Saturday && day != DayOfWeek.Sunday)
{
    var deadline = !string.IsNullOrEmpty(txtDeadline.Text)
        ? Convert.ToDateTime(txtDeadline.Text)  
        :DateTime.Today;

    var bin = new ScheduleBin();
    int staffId = Convert.ToInt32(ddlAssign.SelectedValue);
    bin.PackBins(staffId);

    var alert = (bin.PercentBusy(1) >= 100 && (deadline == DateTime.Today || deadline == DateTime.Today.AddDays(1))
        || bin.PercentBusy(3) >= 100 && (deadline == DateTime.Today.AddDays(3))
        || bin.PercentBusy(5) >= 100 && (deadline == DateTime.Today || deadline == DateTime.Today.AddDays(7)));

    if (alert)
    {
        var staff = BLL.FindStaffByID(staffId);
        ScriptManager.RegisterStartupScript(this, GetType(), "script", "<script language='javascript' type='text/javascript'>alert(\"Whoa there! Looks like " + staff.FirstName + " is a bit booked for that deadline (" + d1 + "% | " + d3 + "% | " + d5 + "%). Check out their task list and talk to the AE's to see about clearing out some room, or consider assigning the task to someone else. \");</script>", false); 
    }
}
 private void CheckTime(object sender, EventArgs e)
  {
     switch (DateTime.Now.DayOfWeek.ToString())
     {
        case "Saturday":
           {
              DoSomething();
              break;
           }
        case "Sunday":
           {
              DoNothing();
              break;
           }
     }
  }