转换为12小时格式

时间:2012-07-16 17:03:14

标签: c# vb.net

我在UI上有以下字段:datepicker,小时下拉列表,分钟下拉列表和上午/下午。

在我的控制器中,我试图将这些字段组合在一起并创建一个像这样的DateTime值(2012年5月18日下午2:45):

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时。我应该如何重构上面的代码行,使其适用于所有情况?

2 个答案:

答案 0 :(得分:4)

按小时模12:

将12 AM和12 PM转换为0和12
(model.ScheduledHour % 12) + (model.ScheduledAMPM == "AM" ? 0 : 12)

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

答案 1 :(得分:0)

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

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

相关问题