String.Format 和时间跨度问题

String.Format and TimeSpan issues

我刚开始使用 Unity,我不知道如何在我的代码设计器 VS 中正确调试脚本。

我在脚本中有这段代码,但无法提供我想要的格式:

private string GetTimeElapsedAsString()
{
    TimeSpan timeElapsed = DateTime.Now.Subtract(_startTime);
    return string.Format("{0:mm} {1:ss} {2:ff}", timeElapsed.TotalMinutes,   timeElapsed.TotalSeconds, timeElapsed.TotalMilliseconds);
}

我想要的是这样的:给定格式的“00:07:32”:"mm:ss:ff"

我只想要最简单的方法来截断每个时间单位的除 2 位以外的所有数字。 有什么想法吗?

问候 Kalrin。

编辑(进行中): 我修改了代码。现在看起来像这样:

private string GetTimeElapsedAsString()
{
    TimeSpan timeElapsed = DateTime.Now.Subtract(_startTime);
    return string.Format("{0:00}:{1:00}:{2:00}", timeElapsed.Minutes, timeElapsed.Seconds, timeElapsed.Milliseconds);
}

当我去测试我的游戏时,我仍然得到 3 位数字显示毫秒 - 为什么会发生这种情况??

看起来像这样: UI Text component in Unity

编辑: 我找到了上一个问题的解决方案:

return string.Format("{0:00}:{1:00}:{2}", timeElapsed.Minutes, timeElapsed.Seconds, timeElapsed.Milliseconds.ToString().Substring(0,2));

我只需要创建一个仅包含整数前 2 位数字的 .Substring(0,2)。

感谢那些试图提供帮助的人! 好看!!:

Working Example

干杯!

您正在将三个数字传递给 Format()

数字无法识别 ``m,s, orf`,所以它们只打印字面字符。

您希望格式字符串 00 将每个数字填充为两位数。

还有,你其实并不想要.Total*;请参阅文档。

我建议你试试

 ts.ToString("mm:ss:ff");