2

我在 UI 上有以下字段:日期选择器、小时下拉列表、分钟下拉列表和上午/下午下拉列表。

在我的控制器中,我试图将这些字段联系在一起并创建一个这样的 DateTime 值(5/18/2012 2:45 PM):

model.Scheduled = new DateTime(model.Scheduled.Value.Year, model.Scheduled.Value.Month, model.Scheduled.Value.Day, model.ScheduledHour + (model.ScheduledAMPM == "AM" ? 0 : 12), model.ScheduledMinute, 0);  

这在大多数情况下都有效,但当我在小时下拉列表中选择 12 时无效。我应该如何重构上面的代码行以使其在所有情况下都有效?

4

2 回答 2

4

通过取 Hour 模 12 将 12 AM 和 12 PM 转换为 0 和 12:

(model.ScheduledHour % 12) + (model.ScheduledAMPM == "AM" ? 0 : 12)

我还建议编写单元测试来验证所有边缘情况。

于 2012-07-16T17:08:12.730 回答
0

您可以利用方法DateTime. TryParse(string input, out DateTime output)方法让 C# 为您进行翻译。

http://msdn.microsoft.com/en-cus/library/ch92fbc1.aspx

于 2012-07-16T17:23:20.907 回答