C# 跳过值班时间代码逻辑

/// <summary>
/// 当前时间是否是值班时间
/// </summary>
private bool IsDutyTime
{
    get
    {
        var dutyTime = "23:00-07:00";
        if (!string.IsNullOrEmpty(dutyTime))
        {
            var now = DateTime.Now;
            var sp = dutyTime.Split('-');
            if (sp.Length == 0)
            {
                var msg = $"值班时间格式有误:{dutyTime},正确格式为(17:30-09:00)"; 
                logger.Error(msg);
                return false;
            }
            #region 跳过设置时间段

            var hStart = 0;
            var mStart = 0;
            var hEnd = 0;
            var mEnd = 0;

            //23:00-07:00
            var spStart = sp[0].Split(':');
            if (spStart.Length > 1)
            {
                hStart = Convert.ToInt32(spStart[0]);
                mStart = Convert.ToInt32(spStart[1]);
            }
            else
            {
                var msg = $"值班时间格式有误:{dutyTime},正确格式为(17:30-09:00)"; 
                logger.Error(msg);
                return false;

            }
            var spEnd = sp[1].Split(':');
            if (spEnd.Length > 1)
            {
                hEnd = Convert.ToInt32(spEnd[0]);
                mEnd = Convert.ToInt32(spEnd[1]);
            }
            else
            {
                var msg = $"值班时间格式有误:{dutyTime},正确格式为(17:30-09:00)"; 
                logger.Error(msg);
                return false;
            }

            if (hStart > hEnd)
            {
                //23:00-07:00  or  
                logger.Info($"设置时间段 dutyTime =>{dutyTime} 【now.Hour > hStart || (now.Hour == hStart && now.Minute >= mStart) || now.Hour < hEnd || (now.Hour == hEnd && now.Minute <= mEnd)】 =>" +
                            $" 【{now.Hour} > {hStart} || ({now.Hour} == {hStart} && {now.Minute} >= {mStart}) || {now.Hour} < {hEnd} || ({now.Hour} == {hEnd} && {now.Minute} <= {mEnd})】");
                if (now.Hour > hStart || (now.Hour == hStart && now.Minute >= mStart) || now.Hour < hEnd || (now.Hour == hEnd && now.Minute <= mEnd))
                {
                    logger.Info($"当前时间段,属于值班时间 =>{dutyTime}");
                    return true;
                }
            }
            else
            {
                //07:00-23:00 and
                logger.Info($"设置时间段 dutyTime =>{dutyTime} 【now.Hour >= hStart && now.Minute >= mStart && now.Hour <= hEnd && now.Minute <= mEnd】 => " +
                            $"【{now.Hour} >= {hStart} && {now.Minute} >= {mStart} && {now.Hour} <= {hEnd} && {now.Minute} <= {mEnd}】");
                if ((now.Hour >= hStart && now.Minute >= mStart) && (now.Hour <= hEnd && now.Minute <= mEnd))
                {
                    logger.Info($"当前时间段,属于值班时间 =>{dutyTime}");
                    return true;
                }
            }
            #endregion

        }

        return false;
    }
}
posted @   VipSoft  阅读(22)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 一个费力不讨好的项目,让我损失了近一半的绩效!
· 清华大学推出第四讲使用 DeepSeek + DeepResearch 让科研像聊天一样简单!
· 实操Deepseek接入个人知识库
· CSnakes vs Python.NET:高效嵌入与灵活互通的跨语言方案对比
· Plotly.NET 一个为 .NET 打造的强大开源交互式图表库
历史上的今天:
2021-10-12 Spring Boot Admin 授权配置
2017-10-12 Oracle 自启动配置
2015-10-12 Oracle数据库密码过期
点击右上角即可分享
微信分享提示