日期时间不允许小时值大于 12



我有这个简单的代码:

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 应用程序中使用该功能。

您正在寻找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

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));

最新更新