這個問題在這里已經有了答案: 你能舍入一個 .NET TimeSpan 物件嗎? (10 個回答) 如何將時間四舍五入到最接近的 X 分鐘? (15 個回答) 昨天關門。
這篇文章昨天被編輯并提交審查。
我從兩個 dateTimePickers 獲取值,我需要獲取它們之間的時間差。現在,我正在使用下面的代碼計算差異,但我得到了錯誤的毫秒時間差。有沒有辦法在不考慮毫秒的情況下計算時間差。 Windows表單螢屏截圖
TimeSpan difference = dateTimePicker2.Value - dateTimePicker1.Value;
例 1;
- 開始時間 : 4/24/2022 2:30:11 PM
- 結束時間:2022 年 4 月 24 日下午 2:30:11
- 實際差異:-00:00:00.0049863
- 預期差異:00:00:00
例 2;
開始時間 : 4/24/2022 2:29:01 PM
結束時間:4/24/2022 10:29:01 PM
實際差異:07:59:59.9037925
預期差異:08:00:00
例 3;
開始時間:4/24/2022 4:24:28 PM
結束時間:4/24/2022 10:30:28 PM
實際差異:06:05:59.9648821
預期差異:06:06:00
當我在 Winform 中的兩個 dateTimePickers 中重新輸入時間值時,它會給出預期的答案,但當我沒有在每個 dateTimePicker 中重新輸入分鐘欄位時它不起作用。
我不想總結答案。我想在不考慮毫秒的情況下進行差異計算。這樣它就可以為我們為 dateTimePickers 決議的值提供正確的答案。
(我是c#的新手。所以如果我不太清楚,我很抱歉。非常感謝!)
uj5u.com熱心網友回復:
DateTime adjustedDateTimePicker2 = dateTimePicker2.Value.AddMilliseconds(dateTimePicker2.Value.Millisecond * -1);
DateTime adjustedDateTimePicker1 = DateTimePicker.Value.AddMilliseconds(dateTimePicker.Value.Millisecond * -1);
TimeSpan difference = adjustedDateTimePicker2 - adjustedDateTimePicker1;
uj5u.com熱心網友回復:
您可以分別讀取小時、分鐘和秒:
int hourCnt = difference.Hours;
int minuteCnt = diffenrence.Minutes;
int secondCnt = difference.Seconds;
uj5u.com熱心網友回復:
您可以先對時間跨度進行四舍五入,然后使用自定義時間跨度格式字串格式化結果,例如"hh':'mm':'ss"or @"hh\:mm\:ss":
var d1 = DateTime.Parse("4/24/2022 4:24:28 PM");
var d2 = DateTime.Parse("4/24/2022 10:30:28 PM");
var d = d2 - d1;
int precision = 0;
const int TIMESPAN_SIZE = 7;
int factor = (int)Math.Pow(10, (TIMESPAN_SIZE - precision));
TimeSpan roundedTimeSpan =
new TimeSpan(((long)Math.Round((1.0 * d.Ticks / factor)) * factor));
MessageBox.Show(roundedTimeSpan.ToString(@"hh':'mm':'ss"));
這表明:
06:06:00
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/464338.html
