将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.313232439423
、TotalHours = 0.000555555
和TotalMilliseconds = 2000
,而不是将1
添加到TotalSeconds
属性中,我会返回这些属性值。
有人知道我做错了什么吗?
附言:我只是想在每次tick
之后给TimeSpan
添加一秒钟
TotalDays
的值实际上是2.31481481481481E-05
,即0.0000231481481481481
。
你得到的值正是第二次勾选时的预期值,你没有调试第一次勾选,你只是错误地解释了这些值。
TotalDays
、TotalHours
和TotalMilliseconds
属性显示TimeSpan
中转换为特定测量值的总值,它们不一起形成值。
2秒等于2000毫秒,等于0.000555555小时。
如果要查看值中的组件,则应查看Days
、Hours
、Minutes
、Seconds
和Milliseconds
属性。在那里,您会发现Seconds
属性是2
,而所有其他属性都为零。
我认为您误读了TotalDays值。当我运行类似的代码时,我得到了TotalDays
值1.15740740740741E-05
。这可能是有道理的,一秒钟可能只是一天的一小部分。
Total*
属性表示TimeSpan
的整体值,而不是TimeSpan
的每个部分的离散值。
Days
、Hours
和Minutes
都将为0,但Total*
属性将表示整个值,即使这些部分是分数部分。