String.Format和TimeSpan问题

时间:2017-01-19 17:23:50

标签: c# unity3d timespan string.format

我刚刚开始使用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));

我需要的只是创建一个.Substring(0,2),它只包含整数的2个第一个数字。

那些试图帮助的人! 看起来不错!!:

Working Example

干杯!

2 个答案:

答案 0 :(得分:4)

您将三个号码传递给Format()

数字不识别“m , s , or f`,因此它们只打印文字字符。

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

另外,你实际上并不想要.Total*;见文档。

答案 1 :(得分:2)

我建议你试试

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