我有一个包含日期时间的列表。
要使用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.Now
和list[list.Count-1]
都有DateTimes,其中DateTime.Now当然高于列表的值。
但由于某种原因,我在变量结果中一直得到0,究竟是怎么回事?
最好的问候,皮特
答案 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图片:
不工作的原因可能是:
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;