从TimeSpan说起
生活随笔
收集整理的這篇文章主要介紹了
从TimeSpan说起
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
小編在編寫WPF程序時,需要做一個判斷:定時使用Modbus協議使用Quartz.net 定時任務讀取設備中的數據,同時也使用定時任務判斷是否長時間獲取不到數據的情況,如果程序中超過一分鐘沒有獲取到數據(數據沒有更新),則認為已經掉線。因此在類中使用了 DateTime類型數據記錄獲取數據的時間。
判斷是否在線使用了當前時間減去獲取數據的時間,類似于這樣:
RunningTime = DateTime.MinValue; var x = DateTime.Now - RunningTime; var y = x.Minutes>1?"連接斷開":"連接正常";上述 x的類型為 TimeSpan。那么問題就從這里埋下了。
問題再現
出現問題的時間點:在不連接設備時,保持程序在運行狀態,整點時間時出現的時候就會出現連接正常的狀態,通過日志進行分析,發現整點時,分鐘為0,與時間最小值做完運算后得到的 x.Minutes的值就為 0,因此出現連接正常的情況。
解決方法
通過TimeSpan的文檔發現 TimeSpan中的屬性如下:
| Days | 獲取當前 TimeSpan 結構所表示的時間間隔的天數部分。 |
| Hours | 獲取當前 TimeSpan 結構所表示的時間間隔的小時數部分。 |
| Milliseconds | 獲取當前 TimeSpan 結構所表示的時間間隔的毫秒數部分。 |
| Minutes | 獲取當前 TimeSpan 結構所表示的時間間隔的分鐘數部分。 |
| Seconds | 獲取當前 TimeSpan 結構所表示的時間間隔的秒數部分。 |
| Ticks | 獲取表示當前 TimeSpan 結構的值的刻度數。 |
| TotalDays | 獲取以整天數和天的小數部分表示的當前 TimeSpan 結構的值。 |
| TotalHours | 獲取以整小時數和小時的小數部分表示的當前 TimeSpan 結構的值。 |
| TotalMilliseconds | 獲取以整毫秒數和毫秒的小數部分表示的當前 TimeSpan 結構的值。 |
| TotalMinutes | 獲取以整分鐘數和分鐘的小數部分表示的當前 TimeSpan 結構的值。 |
| TotalSeconds | 獲取以整秒數和秒的小數部分表示的當前 TimeSpan 結構的值。 |
通過 TimeSpan的屬性發現,按分鐘比較需要使用 TotalMinutes屬性才可以。
說明
在通過時間運算方法使用 TimeSpan作比較時,要特別注意。還有,有事沒事要多看相關文檔才可以。
總結
以上是生活随笔為你收集整理的从TimeSpan说起的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 性能优化 = 改改代码?
- 下一篇: 2020年了,再不会Https就老了