将1秒添加到TimeSpan不起作用

本文关键字:TimeSpan 不起作用 添加 1秒 | 更新日期: 2023-09-27 18:21:28

我有这个代码:

 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.000555555TotalMilliseconds = 2000,而不是将1添加到TotalSeconds属性中,我会返回这些属性值。

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

附言:我只是想在每次tick 之后给TimeSpan添加一秒钟

将1秒添加到TimeSpan不起作用

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

你得到的值正是第二次勾选时的预期值,你没有调试第一次勾选,你只是错误地解释了这些值。

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

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

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

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

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

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