我正在尝试计算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
我将不胜感激任何帮助:)
答案 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);