为TimeSpan添加1秒不起作用

时间:2015-11-11 16:32:07

标签: c# timer win-universal-app

我有这段代码:

 private void TimePlayedTimer_Start()
 {
   timePlayedStr = "00:00:00";
   timePlayed = new DispatcherTimer();
   timePlayed.Tick += timePlayedTimer_Tick;
   timePlayed.Interval = new TimeSpan(0, 0, 0, 1);
   timePlayed.Start();
 }

 void timePlayedTimer_Tick(object sender, object e)
 {
   TimeSpan ts = TimeSpan.Parse(timePlayedStr);
   ts = ts.Add(TimeSpan.FromSeconds(1));
   timePlayedStr = ts.ToString();
 }

当我逐行调试此行时,TimeSpan ts将等于"00:00:00",但在行ts = ts.Add(TimeSpan.FromSeconds(1));后,某些属性TotalDays = 2.313232439423TotalHours = 0.000555555,{ {1}}而不是向TotalMilliseconds = 2000属性添加1,而是返回了这些属性值。

有谁知道我做错了什么?

PS:我只想在每TotalSeconds

之后向TimeSpan添加秒

2 个答案:

答案 0 :(得分:6)

TotalDays的值实际为2.31481481481481E-05,即0.0000231481481481481

你得到的价值恰好是第二个滴答的预期值,你没有设法调试第一个滴答,而你只是在解释错误的值。

TotalDaysTotalHoursTotalMilliseconds属性显示TimeSpan转换为特定测量值的总值,它们不会一起形成值。

2秒与2000毫秒相同,与0.000555555小时相同。

如果要查看值中的组件,您应该查看DaysHoursMinutesSecondsMilliseconds属性。在那里,您会发现Seconds属性为2,其他所有属性均为零。

答案 1 :(得分:3)

我认为你误读了TotalDays的价值。当我运行类似代码时,我的TotalDays值为1.15740740740741E-05。这可能是有道理的,一秒钟可能只是一天的一小部分。

Total*属性代表TimeSpan的整体价值,而不是TimeSpan每个部分的离散价值。

DaysHoursMinutes都将为0,但Total*属性将代表整个值,即使这些部分是小数的。< / p>