繁体   English   中英

常规日期时间问题

[英]Regular DateTime question

我正在写一个服务,但我想要配置设置,以确保服务不会在一周的某一天的特定时间窗口内运行。 例如,周一17:00至19:00。

是否有可能创建一个表示任何星期一的日期时间,因此我可以为DontProcessStartTime提供一个App配置密钥,为DontProcessEndTime设置一个值为“Monday 17:00”和“Monday 19:00”的值?

否则我假设我必须为时间窗口的开始和结束的日期和时间分别设置密钥。

有什么想法吗?

谢谢

您可以使用一个实用程序将您的工作日文本解析为System.DayOfWeek枚举, 例如此处 然后,您可以在与DateTime.Now.DayOfWeek进行比较时使用Enum

您可以保存星期几并在配置文件中开始小时和结束时间,然后使用类似于以下内容的功能:

public bool ShouldRun(DateTime dateToCheck)
{
     //These should be read from your config file:
     var day = DayOfWeek.Monday;
     var start = 17;
     var end = 19;

     return !dateToCheck.DayOfWeek == day &&
            !(dateToCheck.Hour >= start && dateToCheck.Hour < end);
}

您可以使用DateTime DayOfTheWeek属性。 并且要检查适当的时间,您可以使用DateTime.Today (将日期时间设置为今天,时间设置为00:00:00)并添加必要的小时和分钟数。

这是非常粗略的代码,但说明您可以根据需要检查包含当前时间的DateTime对象:

protected bool IsOkToRunNow()
{
    bool result = false;

    DateTime currentTime = DateTime.Now;

    if (currentTime.DayOfWeek != DayOfWeek.Monday && (currentTime.Hour <= 17 || currentTime.Hour >= 19))
    {
        result = true;
    }

    return result;
}

DateTime对象无法处理意味着所有星期一的值。 它必须是特定的星期一。 有一个DayOfWeek枚举。 可能对您有帮助的另一个对象是TimeSpan对象。 您可以使用DayOfWeek结合TimeSpan告诉您何时开始,然后使用另一个TimeSpan告诉您多长时间

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM