You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为何TimeSpan的Milliseconds值未随时间递增?

问题分析与解决方案

嗨,这个问题我之前也踩过同款坑!核心原因是你对TimeSpan的两个毫秒相关属性理解偏差了——Milliseconds和TotalMilliseconds完全是两回事。

为什么Milliseconds会波动?

TimeSpan.Milliseconds只返回当前时间跨度里0-999范围内的毫秒余数,也就是“秒以下的毫秒部分”。举几个直观例子:

  • 如果时间跨度是1234毫秒(1秒234毫秒),Milliseconds返回234
  • 如果时间跨度是2000毫秒(2秒整),Milliseconds返回0
  • 如果时间跨度是2500毫秒(2秒500毫秒),Milliseconds返回500

哪怕你的LastUpdate完全没变化,随着时间推移,每次计算的timeSpan的毫秒余数会在0-999之间循环,自然就出现了你看到的100-900波动情况。

正确的做法:用TotalMilliseconds

如果你想得到从LastUpdate到现在的总毫秒数(持续递增的数值),一定要用TimeSpan.TotalMilliseconds。它会返回一个double类型的值,代表整个时间跨度的总毫秒数——比如1.5秒就是1500.0,3.2秒就是3200.0,完全符合你预期的“持续增大”效果。

修正后的代码示例:

// 确保data.LastUpdate仅初始化一次,未被后续代码修改
TimeSpan timeSpan = DateTime.Now - data.LastUpdate;
// 输出总毫秒数,会随时间持续递增
Debug.Log(timeSpan.TotalMilliseconds);

如果需要整数形式的总毫秒数,可以强制转换为长整型:

Debug.Log((long)timeSpan.TotalMilliseconds);

内容的提问来源于stack exchange,提问作者WDUK

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 03:23:19