DateTime不允许小于12的小时值

时间:2018-04-17 11:30:39

标签: c#

我有这个简单的代码:

DateTime endFinal = new DateTime(
  end.Year, 
  end.Month, 
  end.Day, 
  Convert.ToInt32(hb.EndHours), 
  Convert.ToInt32(hb.EndMinutes), 
  0);

如果我输入的小时数大于12,则会引发无效的日期时间错误。

  

System.ArgumentOutOfRangeException:'小时,分钟和秒参数描述不可表示的日期时间。'

我可以做些什么来避免它?我想输入大于12的数字。

我怎样才能克服这种行为?

我在Web表单Web应用程序中使用该功能。

2 个答案:

答案 0 :(得分:4)

您正在寻找AddHours(可能还有AddMinutes):

   DateTime endFinal = new DateTime(
      end.Year, 
      end.Month, 
      end.Day, 
      0, 
      0, 
      0)
   .AddHours(Convert.ToInt32(hb.EndHours))
   .AddMinutes(Convert.ToInt32(hb.EndMinutes));

现在hb.EndHours可以是任何整数值(超过24或小于0),

修改:测试(请参阅下面的评论):

  DateTime endFinal = new DateTime(
    2017,
       4,
      17,
       0,
       0,
       0)
    .AddHours(13)
    .AddMinutes(50);

  Console.Write(endFinal.ToString("dd-MM-yyyy HH:mm:ss", CultureInfo.InvariantCulture));

结果:

  17-04-2017 13:50:00

答案 1 :(得分:0)

DateTime不能超过24小时,因为 - 好 - 一天只有24小时。
您可以使用TimeSpan来实现您的目标:

DateTime endFinal = new DateTime(end.Year, end.Month, end.Day)
         .Add(new TimeSpan(Convert.ToInt32(hb.EndHours), Convert.ToInt32(hb.EndMinutes), 0));