C# 中时间跨度的意外结果

unexpected results from timespan in C#

TimeSpan ts = DateTime.Now.Subtract(DateTime.Parse(reader1["cur_time"].ToString()));
int a = ts.Minutes;
MessageBox.Show(a.ToString());
MessageBox.Show(ts.Milliseconds.ToString());

减去时间得到 8 分钟,这是正确的。但以毫秒为单位转换这 8 分钟并不能给出正确答案。如果我将 8 分钟转换为毫秒,它应该是 480000 毫秒,但上面的代码给了我 708 个答案。

您正在读取 TimeSpan 的毫秒部分,而不是跨度代表的总毫秒数。

改变

ts.Milliseconds.ToString();

ts.TotalMilliseconds.ToString();

它可能包括一些额外的毫秒数,具体取决于 DateTime.Now 是什么和解析的 cur_time。