【问题标题】:c# How to truncate milliseconds with timespan?c#如何用时间跨度截断毫秒?
【发布时间】:2018-03-14 14:55:49
【问题描述】:

我想显示一个代表计时器的浮点数,我尝试将其格式化为:

00:00:00(分:秒:毫秒)

public static string ConvertToTime(float t){
    TimeSpan ts = TimeSpan.FromSeconds(t);

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

但这会给出完整的毫秒数,即使我用 00 定义格式,精度也不低。

例如,如果计时器是 3.4234063f,它应该输出 00:03:42 而不是 00:03:423。

这是一个基本的东西,但是我在使用时间跨度时无法解决它。

【问题讨论】:

  • 我不明白你的问题。请用您想要的示例编辑您的问题。没错。
  • 我也不懂。如果您在时间跨度的 MS 部分有 750 毫秒,您希望如何以两位数显示?
  • 根据定义,一秒有 1000 毫秒 - 即毫秒是千分之一秒...如果您只想显示 2 位数字,您正在寻找的是百分之一秒,而不是千分之一秒。 .. 所以ts.Milliseconds / 10
  • 你为什么还要使用Timespan?你只需要浮点数的小数部分和整数部分 mod 60 和整数部分 div 60。当你的意思是小数部分时不要使用冒号,使用句点否则你会混淆接下来查看此代码的人。 “00:00.00”
  • 你似乎想要的是厘秒,而不是毫秒

标签: c# timer timespan milliseconds


【解决方案1】:

为了您的用户的理智,我建议您将时间显示为mm:ss.ss,在此处将秒显示到小数点后两位。

这样做:

public static string ConvertToTime(float t)
{
    return string.Format("{0:00}:{1:00.00}", t/60, t%60);
}

【讨论】:

    【解决方案2】:

    当您只需要一些简单的数学运算时,不要使用TimeSpan

    这样的事情(未经测试)可以避免分配并完成您想要的。

    public static string ConvertToTime(float t){
        int totalSeconds = (int)t;
        int minutes = totalSeconds / 60;
        int seconds = totalSeconds % 60;
        int hundredthsOfASecond = (int)((t - totalSeconds)*100);
        return $"{minutes:00}:{seconds:00}.{hundredthsofASecond:00}";
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-10-16
      • 1970-01-01
      • 1970-01-01
      • 2019-08-29
      • 2020-07-26
      • 2010-11-03
      • 1970-01-01
      相关资源
      最近更新 更多