3

我有一个包含日期时间的列表。

要计算 2 DateTime 之间的差异,我使用TimeSpan.

public static List<DateTime> list = new List<DateTime>();
TimeSpan ts = new TimeSpan();
double result = 0;

ts = DateTime.Now - list[list.Count-1];
result = ts.TotalSeconds;

在调试此代码时,DateTime.NowDateTime.Nowlist[list.Count-1]的 DateTime.Now 值当然高于列表的值。

但是由于某种原因,我在变量结果中不断得到 0,到底是怎么回事?

最好的问候,皮特

4

6 回答 6

3

我刚刚尝试了以下方法,效果很好。

            List<DateTime> list = new List<DateTime>();
            list.Add(DateTime.Now.AddDays(-1));
            list.Add(DateTime.Now);
            list.Add(DateTime.Now.AddDays(1));
            TimeSpan ts = new TimeSpan();
            double result = 0;

            ts = DateTime.Now - list[list.Count - 1];
            result = ts.TotalSeconds;

附上调试图:

在此处输入图像描述

不工作的原因可能是:

  1. 您的列表没有被填充
  2. 或者 的值ts.TotalSeconds小于两倍范围(这实际上是不可能的。)
于 2012-04-26T14:52:07.527 回答
2

第一条评论,您不需要= new TimeSpan();- 当您ts再次向下设置时,您只会丢弃它。

当您看到 0 的值时,您的调试器在哪一行result?你有没有越过设定的界限result?如果您在线,则该线尚未实际运行...

于 2012-04-26T14:45:41.697 回答
1

而不是使用 ts = DateTime.Now - list[list.Count-1]; 使用 ts=DateTime.Now.Subtract(list[list.Count-1]

于 2012-04-26T14:46:56.443 回答
1

我认为时差很小,只有几秒钟,可能是毫秒甚至更小。试试这样的滴答声。

结果 = ts.Ticks;

于 2012-04-26T14:47:33.523 回答
1

您发布的代码没有任何问题(除了我建议您加入变量的声明和初始化)。我不得不猜测,但也许您正在“吞下”异常并传递空列表?

然后线

ts = DateTime.Now - list[list.Count-1];

将抛出异常并result保留它的值0

于 2012-04-26T14:49:46.057 回答
1

list 没有任何元素,因此 list.Count - 1 不会击中任何东西。此外,可能没有一整秒的时间来计算。我添加了一个时间(使用刻度)来减去。除此之外,你所拥有的没有任何问题。

double result = 0;
List<DateTime> list = new List<DateTime>();
list.Add(new DateTime(123456));

TimeSpan ts = DateTime.Now - list[list.Count - 1];
result = ts.TotalSeconds;
于 2012-04-26T15:00:23.237 回答