C# 在条件为false时转义while循环

C# 在条件为false时转义while循环,c#,datetime,wait,dayofweek,andand,C#,Datetime,Wait,Dayofweek,Andand,我看到这不是在指定的时间内等待 我一直在努力学习c语言,但还不知道所有的语法是什么。我只是想知道是否有更好的方法来完成这项任务 while (DateTime.Now.DayOfWeek == DayOfWeek.Saturday && DateTime.Now.DayOfWeek == DayOfWeek.Sunday && DateTime.Now.Hour <=8 && DateTime.Now.Hour

我看到这不是在指定的时间内等待

我一直在努力学习c语言,但还不知道所有的语法是什么。我只是想知道是否有更好的方法来完成这项任务

while (DateTime.Now.DayOfWeek == DayOfWeek.Saturday 
    && DateTime.Now.DayOfWeek == DayOfWeek.Sunday 
    && DateTime.Now.Hour <=8 
    && DateTime.Now.Hour >=18  
    && DateTime.Now.Minute <=9)
{
    Random waitTime = new Random();
    int milliseconds = waitTime.Next(120000, 180000);
    System.Threading.Thread.Sleep(milliseconds);
}
while(DateTime.Now.DayOfWeek==DayOfWeek.Saturday)
&&DateTime.Now.DayOfWeek==DayOfWeek.Sunday
&&DateTime.Now.Hour=18

&&DateTime.Now.MinuteJohn是对的,它不可能同时是周六和周日。下面是您的代码

            Random myRand = new Random();
        bool isSatOrSun = DateTime.Now.DayOfWeek == DayOfWeek.Saturday || DateTime.Now.DayOfWeek == DayOfWeek.Sunday;
        bool isNotBetween8And1800 = DateTime.Now.Hour <= 8 || DateTime.Now.Hour >= 18;
        bool isFirstTenMinutes = DateTime.Now.Minute <= 9;

        //if you want to do Between 8 & 18 on Saturday/Sundays OR first 10 minutes of each hour on Saturday/Sunday

        while(isSatOrSun && (isNotBetween8And1800 || isFirstTenMinutes))
        {
            //do your sleep
            int waitTime = myRand.Next(120000, 180000);
            System.Threading.Thread.Sleep(waitTime);

            //now recheck your variables
            isSatOrSun = DateTime.Now.DayOfWeek == DayOfWeek.Saturday || DateTime.Now.DayOfWeek == DayOfWeek.Sunday;
            isNotBetween8And1800 = DateTime.Now.Hour <= 8 || DateTime.Now.Hour >= 18;
            isFirstTenMinutes = DateTime.Now.Minute <= 9;
        }


        //if you want to do all day on Saturday/Sundays OR Between 8 & 18 any day of the week OR  first 10 minutes of each hour any day of the week

        while (isSatOrSun || isNotBetween8And1800 || isFirstTenMinutes)
        {
            //do your sleep
            int waitTime = myRand.Next(120000, 180000);
            System.Threading.Thread.Sleep(waitTime);

            //now recheck your variables
            isSatOrSun = DateTime.Now.DayOfWeek == DayOfWeek.Saturday || DateTime.Now.DayOfWeek == DayOfWeek.Sunday;
            isNotBetween8And1800 = DateTime.Now.Hour <= 8 || DateTime.Now.Hour >= 18;
            isFirstTenMinutes = DateTime.Now.Minute <= 9;
        }
Random myRand=new Random();
bool isSatOrSun=DateTime.Now.DayOfWeek==DayOfWeek.Saturday | | | DateTime.Now.DayOfWeek==DayOfWeek.Sunday;
bool不在8和1800之间=DateTime.Now.Hour=18;

bool isFirstTenMinutes=DateTime.Now.minutes既然您正在学习,我建议您对逻辑使用布尔方法,并在while函数上调用它,如下所示:

方法:

publicstaticbooliswaitingtime()
{
如果((DateTime.Now.DayOfWeek==DayOfWeek.Saturday | | DateTime.Now.DayOfWeek==DayOfWeek.Sunday)
&&(DateTime.Now.Hour=18)

&&DateTime.Now.Minute根据我在过去20分钟所学的内容,如果满足以下任何条件,这似乎会暂停; 是星期天吗, 是星期六吗, 是不是早于0800, 是不是晚了1800点, 现在是不是少于10分钟

Random waitTime = new Random();
while (DateTime.Now.DayOfWeek == DayOfWeek.Saturday || DateTime.Now.DayOfWeek == DayOfWeek.Sunday || DateTime.Now.Hour <=8 || DateTime.Now.Hour >=18  || DateTime.Now.Minute <=9)
{
int milliseconds = waitTime.Next(120000, 180000);
System.Threading.Thread.Sleep(milliseconds);
}
Random waitTime=new Random();

虽然(DateTime.Now.DayOfWeek==DayOfWeek.Saturday | DateTime.Now.DayOfWeek==DayOfWeek.Sunday | DateTime.Now.Hour=18 | DateTime.Now.Minute你不能同时是星期六和星期天……此外,
DateTime.Now.DayOfWeek==DayOfWeek.Saturday和DateTime.Now.DayOfWeek==DayOfWeek.Sunday
在我们所处的星球上不可能是真的!我想您想阅读有关| |(或运算符)的信息并理解布尔逻辑。C1或C2表示C1或C2可以为真以计算为真。C1和C2表示C1和C2都必须为真才能计算为真。此外,DateTime.Now.Hour不能同时小于8和大于18。您需要了解如何正确使用
&&
|
,以及前面的顺序ce.你知道
&&
实际上是什么意思吗?你的逻辑使用了所有的“and”,但你有很多“or”您的描述中有。您也不需要在循环中创建新的随机生成器,否则您的下一个问题可能是一个经常被问到的问题。最后一个或可能不正确取决于他想要什么…他可能只希望它在周六和周日…但不确定是否非常模糊。@JonH是的,我将为不同的int使用不同的选项更新它对他所寻找的内容的描述。@john如果任何条件为真,我希望它暂停。@chris crush code Perfect!!这给了我这么多信息,我可以将其完全修改为我想要的内容。教我布尔变量代码,并仔细检查。我喜欢它。@chris crush code我有点困惑,因为最后三行代码是怎么写的s用于双重检查。它是否会更新
isSatOrSun
和其他变量以反映当前时间?您是否必须这样做,因为您较早地设置了这些变量?如果我使用扩展版本而不是布尔变量,会怎么样?这是对问题的回答、新问题、注释还是其他完整的内容ly?请只在答案部分发布答案。这根本不清楚是否是为了回答问题,特别是因为已经有一个被接受的答案。@EricLippert这是一个答案。我接受chris chrus code的答案,因为它是最广泛、最有用的答案。我通常会发布我将在中使用的内容我的脚本作为答案,向所有感兴趣的人展示,并寻求潜在的反馈。
Random waitTime = new Random();
while (DateTime.Now.DayOfWeek == DayOfWeek.Saturday || DateTime.Now.DayOfWeek == DayOfWeek.Sunday || DateTime.Now.Hour <=8 || DateTime.Now.Hour >=18  || DateTime.Now.Minute <=9)
{
int milliseconds = waitTime.Next(120000, 180000);
System.Threading.Thread.Sleep(milliseconds);
}