display timespan nicely

前端 未结 4 2236
心在旅途
心在旅途 2021-02-19 01:48

Excuse the rough code, I\'m trying to display the duration of videos given the time in seconds. I\'ve had a go below but it\'s not working properly.

I want it to just d

相关标签:
4条回答
  • 2021-02-19 02:27

    I think you can simplify this by removing the "D2" aspect of the format and then you won't need a special case for the under ten minutes option. Basically just using

    string.Format("{0}m:{1}s", t.Minutes, t.Seconds);
    

    will get you one or two digits as required. So your final case is:

    string.Format("{0}h:{1}m:{2}s", t.Hours, t.Minutes, t.Seconds);
    
    0 讨论(0)
  • 2021-02-19 02:31

    Something like:

    public static string PrintTimeSpan(int secs)
    {
       TimeSpan t = TimeSpan.FromSeconds(secs);
       string answer;
       if (t.TotalMinutes < 1.0)
       {
         answer = String.Format("{0}s", t.Seconds);
       }
       else if (t.TotalHours < 1.0)
       {
         answer = String.Format("{0}m:{1:D2}s", t.Minutes, t.Seconds);
       }
       else // more than 1 hour
       {
         answer = String.Format("{0}h:{1:D2}m:{2:D2}s", (int)t.TotalHours, t.Minutes, t.Seconds);
       }
    
       return answer;
    }
    
    0 讨论(0)
  • 2021-02-19 02:36
    readonly static Char[] _colon_zero = { ':', '0' };
    // ...
    
    var ts = new TimeSpan(DateTime.Now.Ticks);
    String s = ts.ToString("h\\:mm\\:ss\\.ffff").TrimStart(_colon_zero);
    
    .0321
    6.0159
    19.4833
    8:22.0010
    1:04:2394
    19:54:03.4883
    0 讨论(0)
  • 2021-02-19 02:42

    According to msdn try this:

    if (secs < 60)
    {
        answer = t.Format("s");
    }
    else if (secs < 600)//tenmins
    {
        answer = t.Format("m:s");
    }
    // ...
    
    0 讨论(0)
提交回复
热议问题