c# - 如何在周末暂停工作,特别是在周五下午 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 小时后,这会将日期时间设置为我的条件,这将暂停工作。
解决方案
我个人觉得扭转这一局面更容易,因为这样的条件比一周中每隔一天测试一次要少*:
“如果在星期五或星期六或星期日或星期一之前 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)
推荐阅读
- java - Setters 和 getters 提示我“Java 找不到符号错误”,这使代码无法通过我的学习平台的测试
- angular - 如何全局模拟 Jasmine 的 Angular 服务
- spring-boot - @ExceptionHandler 捕获的异常不会被 MetricsWebFilter 记录
- mysql - 通过集群重启使用 Persistent Volume 持久化 MySQL pod 的数据
- c# - 如何将数据从 Windows 发送到 HID 键盘?
- node.js - 如何在 Tizen 设备上安装 NodeJS?
- java - 没有从 join() 方法中得到 InterruptedException
- reactjs - 如何解决 JSX 中的 if/else 语句?
- android - Flutter NetworkImage 无法从 url 加载 HEIC 图像
- python - 如何仅在需要时使用 anaconda python(在 linux 中)