【问题标题】:Create method for 24 hour time format创建 24 小时时间格式的方法
【发布时间】:2021-12-30 15:28:25
【问题描述】:

我正在尝试使用两个 int 参数创建 C# 方法

public void Time(int hours, int minutes)

满足以下所有测试用例:

Time(11, 7), returns: "11:07"
Time(24, 0), returns: "00:00"
Time(26, 0), returns: "02:00"
Time(0, 160), returns "02:40" (since 160 minutes = 2 hours and 40 minutes)
Time(-1, 0), returns: "23:00"  (negative number - counterclockwise)
Time(1, -40), returns: "00:20"
Time(-25, -160), returns: "20:20" 

我的不足之处是:

if (hours > 23)
{
    hours %= 24; 
}

if (minutes > 59)
{
    minutes %= 60;
}

 

但这仅满足第一、第二和第三个条件。

【问题讨论】:

  • 您能否发布整个Time 方法,并更明确地说明该方法必须遵循的规则?
  • 你的方法的返回类型是void,所以它不应该返回任何东西。如果您的意思是不太明显的“返回”形式,那么它的数据类型是什么?
  • 字符串。所以基本上当有人输入 26 表示 int 小时和 0 表示 int 分钟时,它应该返回“02:00”。在这种情况下,我对算法更感兴趣。我仍在努力实施:(

标签: c# algorithm methods


【解决方案1】:

不要重新发明轮子 - 改用 TimeSpan

public void Time(int hours, int minutes)
{
    var time = new TimeSpan(hours, minutes, 0);
    Console.WriteLine((DateTime.Today + time).ToString("HH:mm"));
}

【讨论】:

  • @gunr2171 Today 仅用于获取时间部分的00:00。我也可以使用new DateTime(2525,1,1) 来代替......你希望使用Today 得到什么边缘情况?
  • 非常感谢。这当然可以解决问题。我相信我不允许使用 TimeSpan 但这仍然很有帮助。
  • 啊,所以这是一个家庭作业......在这种情况下,我建议将5 % 24 的值与29 % 24 进行比较,看看为什么你的条件是多余的。使用整数除法从分钟中得到小时,你几乎没有家了。我不会为你编写代码,因为它不会教你任何东西。
猜你喜欢
  • 1970-01-01
  • 2021-11-27
  • 1970-01-01
  • 2013-01-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-06-15
  • 1970-01-01
相关资源
最近更新 更多