将 1 秒添加到 TimeSpan 不起作用

Adding 1 second to TimeSpan not working

我有这个代码:

 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 , TotalMilliseconds = 2000 而不是向 TotalSeconds 属性添加 1 我得到了这些返回的 属性 值。

有谁知道我做错了什么吗?

PS:我只是想在每个 tick

之后向 TimeSpan 添加一秒钟

我认为您误读了 TotalDays 值。当我 运行 类似的代码时,我得到 TotalDays1.15740740740741E-05 值。这可能是有道理的,一秒钟可能大约是一天的一小部分。

Total* 属性表示 TimeSpan 的整体值,而不是 TimeSpan.

每个部分的离散值

DaysHoursMinutes 都将为 0,但 Total* 属性将代表整个值,即使这些部分是小数.

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

您获得的值正是第二次报价时的预期值,您没有设法调试第一个报价,您只是在解释错误的值。

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

2 秒等于 2000 毫秒,等于 0.000555555 小时。

如果要查看值中的组件,应查看 DaysHoursMinutesSecondsMilliseconds 特性。在那里你会发现 Seconds 属性 是 2 而其他的都是零。