【问题标题】:how to convert seconds in min:sec format如何将秒转换为 min:sec 格式
【发布时间】:2011-04-09 13:32:49
【问题描述】:

如何将秒转换为 Minute:Second 格式

【问题讨论】:

    标签: c# time


    【解决方案1】:

    一个通用的版本是像这样使用TimeSpan

    var span = new TimeSpan(0, 0, seconds); //Or TimeSpan.FromSeconds(seconds); (see Jakob C´s answer)
    var yourStr = string.Format("{0}:{1:00}", 
                                (int)span.TotalMinutes, 
                                span.Seconds);
    

    【讨论】:

      【解决方案2】:
      int totalSeconds = 222;
      int seconds = totalSeconds % 60;
      int minutes = totalSeconds / 60;
      string time = minutes + ":" + seconds;
      

      【讨论】:

      • 这会将 125 秒格式化为“2:5”,而我怀疑 2:05 会更合适。
      • 是的,字符串的格式没有为单个数字的秒数提供前导零,所以我会这样做:string time = (totalSeconds / 60).ToString() + ": " + (totalSeconds % 60).ToString("00");
      【解决方案3】:

      为了完整起见,我将使用 TimeSpan 添加答案(从 .NET 4.0 开始工作):

      int seconds = 1045;
      var timespan = TimeSpan.FromSeconds(seconds);            
      Console.WriteLine(timespan.ToString(@"mm\:ss"));
      

      【讨论】:

      • +1 for .FromSeconds 而不是像我这样使用构造函数。但是您的代码无法编译 - .ToString 没有重载。
      • AFAIK,这个重载是在 .NET 4 中添加的:msdn.microsoft.com/en-us/library/dd992632.aspx
      • 啊,公平 :) 但另一个问题是它最多只能显示 59 分钟。但是,我不知道这对拉梅什来说是否足够。
      • 好点。看到 Ramesh 实际选择了什么答案,我真的认为他不太关心格式:-)
      【解决方案4】:

      类似这样的:

      string minSec = string.Format("{0}:{1:00}", seconds / 60, seconds % 60);
      

      请注意,这将确保秒始终显示为两位数,例如“2:05”持续 125 秒。目前会议记录的处理方式不同,但当然可以。

      这不能很好地处理负数。如果你的秒数可能是负数,你可能想要这样的东西:

      string minSec = string.Format("{0}:{1:00}", seconds / 60, 
                                    (Math.Abs(seconds)) % 60);
      

      最后,你会永远只有不到一小时的时间吗?例如,当您真正的意思是“1:20:00”时,看到“80:00”可能看起来很奇怪。

      【讨论】:

        【解决方案5】:
        double seconds=125;    
        TimeSpan.FromSeconds(seconds).ToString() 
        

        会给你:00:02:05。据我了解,此内置解决方案更具可扩展性,因为它也可以为您提供数小时的时间,而无需任何逻辑管道。

        【讨论】:

        • 十年后:这会给结果字符串增加毫秒数,这不是 OP 要求的。
        • 十年后:您可以使用TimeSpan.FromSeconds(seconds).ToString(@"hh\:mm\:ss") 获取小时、分钟、秒格式。如果你也想要 mSec,你可以使用.ToString(@"hh\:mm\:ss\:fff");
        【解决方案6】:
        var seconds = 60;
        //10,000 ticks in a millisecond
        var ticks = seconds*10000*1000;
        DateTime dt = new DateTime(ticks);
        dt.ToString("mm:ss");
        

        【讨论】:

        • 如果有时间,它还能工作吗?例如。 3700 秒是 1 小时 1 分 40 秒。它不会返回 1:40 而不是 61:40?
        • 是的,它适用于小时、天和 DateTime 结构的每个成员。自己试试;)
        • 在代码中添加一些解释会使这个答案更好。
        【解决方案7】:

        简单的数学。 60 秒到一分钟。

        int mins = totalseconds/60;
        int secs = totalseconds % 60;
        
        Console.Writeline(string.Format("{0}:{1}", mins, secs));
        

        【讨论】:

          【解决方案8】:

          另一种显示秒数的方法,例如"2:05" 可能是使用 PadLeft。

          string time = minutes.ToString() + ":" + seconds.ToString().PadLeft(2,'0');
          

          【讨论】:

            【解决方案9】:

            不严格回答最初的问题,但如果将来有人(或我自己)从谷歌来这里也想用毫秒格式化浮点数:

            float secs = 23.69;
            string m_ss_mmm = string.Format("{0}:{1:00}.{2:000}", (int)secs / 60, (int)(secs % 60), (secs - ((int)secs)) * 1000);
            

            结果:

            0:23.690
            

            【讨论】:

              【解决方案10】:

              什么对我有用...

              public static string SecondsToMinutes(int seconds)
              {
                 var ts = new TimeSpan(0, 0, seconds);                
                 return new DateTime(ts.Ticks).ToString(seconds >= 3600 ? "hh:mm:ss" : "mm:ss");
              }
              

              【讨论】:

                【解决方案11】:

                如果你需要它作为浮点数或双精度:

                float seconds = 339;
                float totalTimeInMins = (float) (Math.Floor(seconds / 60) + (seconds % 60) / 100);
                

                【讨论】:

                  猜你喜欢
                  • 1970-01-01
                  • 2020-12-13
                  • 2012-02-20
                  • 2014-12-18
                  • 1970-01-01
                  • 2019-11-08
                  • 1970-01-01
                  • 2013-08-27
                  • 1970-01-01
                  相关资源
                  最近更新 更多