C# 确定一周中的某一天和某一时间是否属于自定义周末时段

C# 确定一周中的某一天和某一时间是否属于自定义周末时段,c#,c,algorithm,delphi,C#,C,Algorithm,Delphi,我一直在尝试想出一种方法,给定一周中的某一天和某一天的某个时间,如果它属于自定义周末时段,它将返回 周末期间保存在4个变量中,如下所示: 开始的一周中的某一天(0-6) 一天中开始的时间(0-23) 一周中结束的那一天(0-6) 一天中结束的时间(0-23) 基于这些字段,周末可以是用户选择的任何时间段(即使它远远超出正常周末) 我已经拍了一段时间了,但是没有效果。我在delphi中尝试这一点,但任何语言都可以,因为我在寻找算法而不是实现。我假设还有一个约束,即端点>=beginpoint 最简

我一直在尝试想出一种方法,给定一周中的某一天和某一天的某个时间,如果它属于自定义周末时段,它将返回

周末期间保存在4个变量中,如下所示:

  • 开始的一周中的某一天(0-6)
  • 一天中开始的时间(0-23)
  • 一周中结束的那一天(0-6)
  • 一天中结束的时间(0-23)
  • 基于这些字段,周末可以是用户选择的任何时间段(即使它远远超出正常周末)


    我已经拍了一段时间了,但是没有效果。我在delphi中尝试这一点,但任何语言都可以,因为我在寻找算法而不是实现。

    我假设还有一个约束,即端点>=beginpoint

    最简单的方法是将“每周开始后的小时数”标准化

    double interest = day * 24 + hours;
    double startWeekend = startDay * 24 + startHours;
    double endWeekend = endDay * 24 + endHours.
    bool isInWeekend = interest >= startWeekend && interest < endWeekend;
    
    双倍利息=天*24+小时;
    双星端=星日*24+星日;
    双休日=结束日*24+结束小时。
    bool isInWeekend=interest>=startWeekend&interest
    根据需要调整

    编辑: 如果问题是周末可能与7*24小时的界限重叠,那么它会变得更有趣:

    if startWeekend < endWeekend
    then isInWeekend = interest >= startWeekend AND interest < endWeekend;
    else isInWeekend = interest >= startWeekend OR interest < endWeekend;
    
    如果startWeekend=startWeekend和interest=开始周末或利息<结束周末;
    
    (C/Pascal伪代码稍微混合)

    将这四个值分别称为dstart、dend和hstart、hend。然后考虑从第0天到第0小时的总小时数,这是由<代码> TyStase=dSt** 24 + HStand,以及对于<代码> TyEng/<代码>。
    如果您当前所在的一周时间在
    t\u end
    之前或
    t\u start
    之后,则您处于周末时段。

    如果要处理换行的间隔

    double hstart = startDay*24 + startHour;
    double hend = endDay*24 + endHour;
    double htest = testDay*24 + testHour;
    return (hend-hstart)*(htest-hstart)*(hend-htest) > 0
    

    为什么我需要约束?这不是终点,而是一周中的一天。我把星期天算为0。所以,星期六->星期天对我来说是6->0。选择一个周末时段星期五(17:00)->星期一(9:00)将产生5,17->1,9为什么这是无效的?你的意思是:“在t_结束之前和t_开始之后”?文莱的周末是星期五和星期天,星期六是工作日,那么文莱呢?