代码之家  ›  专栏  ›  技术社区  ›  user-44651

只显示可被5整除的时间和分钟

c#
  •  0
  • user-44651  · 技术社区  · 7 年前

    我只想用5分(即:1:00,2:05,3:45)来表示时间。等等)

    但是当我输出时间时,我得到10:00、10:01、10:02、10:03和10:04。从不10:05。分钟数总是在0到4之间。

    小时和分钟是分开的整数

    我做错什么了?

         public string TimeAsText {
             get {
                  return Hours.ToString().PadLeft(2, '0') + ":" + (Minutes % 5).ToString().PadLeft(2, '0');
             }
         }
    
    2 回复  |  直到 7 年前
        1
  •  2
  •   Robin Ding    7 年前

    因为 (Minutes % 5) 仅返回0,1,2,3,4。 如果你想得到5,你

    public string TimeAsText {
         get {
              return Hours.ToString().PadLeft(2, '0') + ":" + ((Minutes / 5)*5).ToString().PadLeft(2, '0');
         }
     }
    

    或者如果你想绕过去,

       public string TimeAsText {
             get {
                  return Hours.ToString().PadLeft(2, '0') + ":" + ((int)(Math.Round(Minutes / 5.0)*5)).ToString().PadLeft(2, '0');
             }
         }
    
        2
  •  3
  •   Christo    7 年前

    模运算符(“%”)返回除法的其余部分。你不想要剩下的。您希望使用剩余部分来确定输出。

    //未测试的长版本

    if(Minutes % 5 == 0) // IE. minutes is evenly divisible by 5
    {
       return Hours.ToString().PadLeft(2, '0') + ":" + Minutes.ToString().PadLeft(2, '0');
    }
    

    //未测试的较短版本

    return Hours.ToString().PadLeft(2, '0') + ":" + (Minutes % 5 == 0) ? Minutes.ToString().PadLeft(2, '0') : "00";