在计算2个日期时间之间的差异时获得不正确的计时

时间:2018-04-13 13:11:47

标签: c#

我正在尝试计算2个日期时间之间的时差,但得到的时间不正确。

我有2个日期时间如下:

 DateTime end = new DateTime(2018, 04, 13, 12, 17, 39, 067);
 DateTime start = new DateTime(2018, 04, 13, 12, 17, 38, 893);
 string s = string.Format("{0:%m} : {0:%s}", (end - start)); // 0:0

我应该得到1秒但得到0 minutes and 0 seconds

此外,我还希望输出2位数字,如下所示:

00:01 

但仍然仅产生0:0:

string s = string.Format("{00:%m} : {00:%s}", (end - start)); // 0:0

我将不胜感激任何帮助:)

enter image description here

2 个答案:

答案 0 :(得分:2)

正如已经评论过的那样 - 问题是由于毫秒精度。您可以通过添加毫秒的负数来减去毫秒:

DateTime end = new DateTime(2018, 04, 13, 12, 17, 39, 067);
DateTime start = new DateTime(2018, 04, 13, 12, 17, 38, 893);
var diff = end.AddMilliseconds(-end.Millisecond) - start.AddMilliseconds(-start.Millisecond);
string s = string.Format("{0:mm} : {0:ss}", diff);
Console.WriteLine (s); // 00:01

注意最终值是否为38秒&例如967毫秒 - 所以在相同的实际秒内 - 然后将显示00:00。

答案 1 :(得分:1)

当然是0:0。您正在测试的网站将向上四舍五入到最接近的秒数。

如果你想模仿它,你也必须围捕:

DateTime end = new DateTime(2018, 04, 13, 12, 17, 39, 067);
DateTime start = new DateTime(2018, 04, 13, 12, 17, 38, 893);
var difference = TimeSpan.FromSeconds(Math.Ceiling((end - start).TotalMilliseconds / 1000.0));
string s = string.Format("{0:mm}:{0:ss}", difference);
Console.WriteLine(s);

Fiddle