簡體   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