2

UI には、datepicker、hours ドロップダウン、minutes ドロップダウン、am/pm ドロップダウンのフィールドがあります。

私のコントローラーでは、これらのフィールドを結び付けて、次のような DateTime 値を作成しようとしています (2012 年 5 月 18 日 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 modulo 12 を取得して、午前 12 時と午後 12 時を 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 に答える