C# 跳过值班时间代码逻辑
  DGdJRDRdbXFV 2023年11月19日 26 0
/// <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;
    }
}

作者:VipSoft

【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年11月19日 0

暂无评论

推荐阅读
DGdJRDRdbXFV