计算2个日期时间之间的差异(Timespan + double)

时间:2012-04-26 14:42:34

标签: c# .net

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

要使用TimeSpan计算2 DateTime之间的差异。

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.Nowlist[list.Count-1]都有DateTimes,其中DateTime.Now当然高于列表的值。

但由于某种原因,我在变量结果中一直得到0,究竟是怎么回事?

最好的问候,皮特

6 个答案:

答案 0 :(得分: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;

附上了debbuging图片:

enter image description here

不工作的原因可能是:

  1. 您的列表未填充
  2. 或者ts.TotalSeconds的值小于双倍范围(实际上这是不可能的。)

答案 1 :(得分:2)

首先评论,您不需要= new TimeSpan(); - 当您再次向下设置ts时,您只会丢弃此内容。

当您看到result的值为0时,您的调试器在哪一行?您是否已经超过设置了result的行?如果你在线,那么那条线还没有真正运行......

答案 2 :(得分:1)

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

答案 3 :(得分:1)

我认为时差对于秒来说很小,可能在几秒钟甚至更小。试试这样的滴答声。

result = ts.Ticks;

答案 4 :(得分:1)

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

然后就行了

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

会抛出异常,result会保留0的值。

答案 5 :(得分: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;