[英]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.