首页 > 解决方案 > 如何在周末暂停工作,特别是在周五下午 5 点到周一早上 7 点之间

问题描述

我正试图在周末暂停工作。具体来说,周五下午 5 点停止工作,周一早上 6 点恢复工作。

这是我到目前为止所拥有的,但它没有按预期工作:

        var date = DateTime.Now;
        var testDay = date.AddHours(54);
        if ((testDay.DayOfWeek != DayOfWeek.Saturday && testDay.DayOfWeek != DayOfWeek.Sunday) || (testDay.DayOfWeek == DayOfWeek.Friday && testDay.Hour < 17) || (testDay.DayOfWeek == DayOfWeek.Monday && testDay.Hour > 6))
        {
            Console.WriteLine("Do work");
        }
        else
        {
            Console.WriteLine("Pause work");
        }

**今天是星期三,所以我将 testDay 创建为 54 小时后,这会将日期时间设置为我的条件,这将暂停工作。

标签: c#

解决方案


我个人觉得扭转这一局面更容易,因为这样的条件比一周中每隔一天测试一次要少*:

“如果在星期五或星期六或星期日或星期一之前 5 之后”,则“暂停”,否则“做”

还结合了 Peter 的建议,因为它是减少长行并使代码更加自我记录的好方法

public static void Main()
{
    var date = DateTime.Now;
    while(date < DateTime.Now.AddDays(8)){
        Print(date);
        date = date.AddHours(3);
    }
}

static void Print(DateTime testDay){
    var dow = testDay.DayOfWeek;
    var isSat = dow == DayOfWeek.Saturday;
    var isSun = dow == DayOfWeek.Sunday;
    var isFriLate = dow == DayOfWeek.Friday && testDay.Hour >= 17;
    var isMonEarly = dow == DayOfWeek.Monday && testDay.Hour < 6;
    
    if (isFriLate || isSat || isSun || isMonEarly)
    {
        Console.WriteLine(testDay + " - Pause work");
    }
    else
    {
        Console.WriteLine(testDay + " - Do work");
    }
}
6/30/2021 6:07:39 PM - Do work
6/30/2021 9:07:39 PM - Do work
7/1/2021 12:07:39 AM - Do work
7/1/2021 3:07:39 AM - Do work
7/1/2021 6:07:39 AM - Do work
7/1/2021 9:07:39 AM - Do work
7/1/2021 12:07:39 PM - Do work
7/1/2021 3:07:39 PM - Do work
7/1/2021 6:07:39 PM - Do work
7/1/2021 9:07:39 PM - Do work
7/2/2021 12:07:39 AM - Do work
7/2/2021 3:07:39 AM - Do work
7/2/2021 6:07:39 AM - Do work
7/2/2021 9:07:39 AM - Do work
7/2/2021 12:07:39 PM - Do work
7/2/2021 3:07:39 PM - Do work
7/2/2021 6:07:39 PM - Pause work
7/2/2021 9:07:39 PM - Pause work
7/3/2021 12:07:39 AM - Pause work
7/3/2021 3:07:39 AM - Pause work
7/3/2021 6:07:39 AM - Pause work
7/3/2021 9:07:39 AM - Pause work
7/3/2021 12:07:39 PM - Pause work
7/3/2021 3:07:39 PM - Pause work
7/3/2021 6:07:39 PM - Pause work
7/3/2021 9:07:39 PM - Pause work
7/4/2021 12:07:39 AM - Pause work
7/4/2021 3:07:39 AM - Pause work
7/4/2021 6:07:39 AM - Pause work
7/4/2021 9:07:39 AM - Pause work
7/4/2021 12:07:39 PM - Pause work
7/4/2021 3:07:39 PM - Pause work
7/4/2021 6:07:39 PM - Pause work
7/4/2021 9:07:39 PM - Pause work
7/5/2021 12:07:39 AM - Pause work
7/5/2021 3:07:39 AM - Pause work
7/5/2021 6:07:39 AM - Do work
7/5/2021 9:07:39 AM - Do work
7/5/2021 12:07:39 PM - Do work
7/5/2021 3:07:39 PM - Do work
7/5/2021 6:07:39 PM - Do work
7/5/2021 9:07:39 PM - Do work
7/6/2021 12:07:39 AM - Do work
7/6/2021 3:07:39 AM - Do work
7/6/2021 6:07:39 AM - Do work
7/6/2021 9:07:39 AM - Do work
7/6/2021 12:07:39 PM - Do work
7/6/2021 3:07:39 PM - Do work
7/6/2021 6:07:39 PM - Do work
7/6/2021 9:07:39 PM - Do work
7/7/2021 12:07:39 AM - Do work
7/7/2021 3:07:39 AM - Do work
7/7/2021 6:07:39 AM - Do work
7/7/2021 9:07:39 AM - Do work
7/7/2021 12:07:39 PM - Do work
7/7/2021 3:07:39 PM - Do work
7/7/2021 6:07:39 PM - Do work
7/7/2021 9:07:39 PM - Do work
7/8/2021 12:07:39 AM - Do work
7/8/2021 3:07:39 AM - Do work
7/8/2021 6:07:39 AM - Do work
7/8/2021 9:07:39 AM - Do work
7/8/2021 12:07:39 PM - Do work
7/8/2021 3:07:39 PM - Do work
7/8/2021 6:07:39 PM - Do work

https://dotnetfiddle.net/lgwpCm

* (尽管您可以使用星期几枚举作为数字,并测试范围 >= tue 和 <= thu)


推荐阅读