2017-10-06 22 views
0

したがって、時間値を格納する6つのドロップダウンリストがあります。複数の時間関連のドロップダウンリストを連結して計算時間を計算する

Start time 
DDL Hour - 01, 02, 03,..., 10, 11, 12 
DDL Minutes - 00, 15, 30, 45 
DDL TimeofDay - AM, PM 

Finish Time 
Same values 

私は、屈折率の変化に、開始と終了の間の時間を計算する方法を探していました。

私は持っているドロップダウンリストの数でこれを行う方法はありますか?私は開始のための1ドロップダウンとフィニッシュのための1ドロップダウンを使用する人々のいくつかの例を見てきました。他のすべてが失敗した場合でも私はそれを行うことができましたが、3を一緒に連結して時間を表示する方法があることを望んでいました。

+2

私はあなたがやりたいだろうかと思うと、開始を表す日時を作成していますこれは、DateTimeでMSDNのドキュメントを参照すると些細なことです。それから、終了時間に同じことを行い、もう一方を引きます。このすべてを行う*メソッド*を書いて、そのメソッドをすべてのドロップダウンのindex-changedイベントから呼び出すとします。私はそれらのすべてのために同じイベントハンドラメソッドを使用したいと思います。これにはコードの記述が含まれますが、それは終日終わり、それ以外の場合はやりがいのある人生を送る人もいます。 –

+1

Edが言うことに追加するには、別のDateTimeを減算すると 'TimeSpan'値が得られます。これらの 'TimeSpan'のリストを持っていれば、' .Aggregate((t1、t2)=> t1 + t2) 'を呼び出すことで、それらを_sum_することができます。 – StriplingWarrior

+0

ありがとうございます。私はコードを書くことに問題はありません。値を組み合わせることに不思議。私はこれに入る必要があるカレンダーも持っているので、日時を作成することを見ていきます。 – maltman

答えて

2

私は最も簡単な方法は、あなたが3つのドロップダウンの他のセットのためにこれを繰り返して次に

DateTime time = DateTime.Today.AddHours(ddHours.SelectedValue).AddMinutes(ddMins.SelectedValue); 
if (ddTimeOfDay.SelectedValue == "PM") time.AddHours(12); 

ような何かを行うことができ、3つのドロップダウンを組み合わせることにより、DateTime値を取得することだと思います。あなたはテキスト値を持っている場合は、あなただけのすべてを一度に解析するためにすべてのものを組み合わせかもしれません

TimeSpan diff = timeFinish - timeStart; 
1

:違いを見つけるために

var DDLStart_Hour = // start hours dropdown value 
var DDLStart_Minute = // start minute dropdown value 
var DDLStart_Tt = // start AM/PM dropdown value 

var DDLEnd_Hour = // end hours dropdown value 
var DDLEnd_Minute = // end minute dropdown value 
var DDLEnd_Tt = // end AM/PM dropdown value 

var now = DateTime.Now; 
var start = DateTime.Parse($"{now.Month}/{now.Day}/{now.Year} {DDLStart_Hour}:{DDLStart_Minute}:00 {DDLStart_Tt}"); 
var end = DateTime.Parse($"{now.Month}/{now.Day}/{now.Year} {DDLEnd_Hour}:{DDLEnd_Minute}:00 {DDLEnd_Tt}"); 

var elapsed = end - start; // TimeSpan