我从两个dateTimePickers中获取值,我需要获得它们之间的时差。现在,我正在使用下面的代码计算时间差,但是我得到的毫秒时间差是错误的。有没有一种方法可以在不考虑毫秒的情况下计算时差?WindowsFormScreenshot
TimeSpan difference = dateTimePicker2.Value - dateTimePicker1.Value;
示例1,
- 开始时间:4/24/2022 2:30:11 PM
- 结束时间:4/24/2022 2:30:11 PM
- 实际差值:-00:00:00.0049863
- 期望差值:00:00:00
示例2,
开始时间:4/24/2022 2:29:01 PM
end time: 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
它会给出预期的答案,当我在两个dateTimePicker在Winform中重新输入时间值,但不工作时,我没有在每个dateTimePicker中重新输入分钟字段。
我不想把答案四舍五入。我想在不考虑毫秒的情况下进行差值计算。因此,无论我们为dateTimePickers解析什么值,它都会给出正确的答案。
我是c#的新手。很抱歉我说得不太清楚。非常感谢!)DateTime adjustedDateTimePicker2 = dateTimePicker2.Value.AddMilliseconds(dateTimePicker2.Value.Millisecond * -1);
DateTime adjustedDateTimePicker1 = DateTimePicker.Value.AddMilliseconds(dateTimePicker.Value.Millisecond * -1);
TimeSpan difference = adjustedDateTimePicker2 - adjustedDateTimePicker1;
您可以分别读取小时、分钟和秒:
int hourCnt = difference.Hours;
int minuteCnt = diffenrence.Minutes;
int secondCnt = difference.Seconds;
您可以先舍入时间跨度,然后使用自定义时间跨度格式字符串(如"hh':'mm':'ss"
或@"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