私はC#でWebフォームを構築しています。私は開始時間(開始時間、開始分、開始時間(AMまたはPM))と終了時間(3分)の3ドロップスダウンを持っています。私は正午とデバッグを選択1.ここに私のコードであるとして、値がそう。時間差が正しく計算されない
var startHourDDL = ddlStartHour.SelectedValue;
var startMinuteDDL = ddlStartMinute.SelectedValue;
var startTOD = ddlStartTOD.SelectedValue;
int startHour = Convert.ToInt32(startHourDDL);
int startMinute = Convert.ToInt32(startMinuteDDL);
var finishHourDDL = ddlFinishHour.SelectedValue;
var finishMinuteDDL = ddlFinishMinute.SelectedValue;
var finishTOD = ddlFinishTOD.SelectedValue;
int finishHour = Convert.ToInt32(finishHourDDL);
int finishMinute = Convert.ToInt32(finishMinuteDDL);
if (startTOD == "PM")
{
startTime = new TimeSpan(startHour + 12, startMinute, 0);
}
else
{
startTime = new TimeSpan(startHour, startMinute, 0);
}
if (finishTOD == "PM")
{
finishTime = new TimeSpan(finishHour + 12, finishMinute, 0);
}
else
{
finishTime = new TimeSpan(finishHour, finishMinute, 0);
}
TimeSpan diff = finishTime - startTime;
string time = String.Format(diff.Hours + " Hours, " + diff.Minutes + " Minutes");
lblDurAmount.Text = time;
を示し、私は開始時間のために午後2時と終了時間の午後4時を選択した場合、ラベルは2時間を示しています。私は開始時間12:00 PMと終了時刻のため午後2時を選択した場合しかし、私は-10時間を取得します。これは私が12:00 PMでデバッグするとき、私は開始時間のために得るものです
。
{1.00:00:00}
ここ
私は午後5時
{17:00:00}
を選択すると、それは私もif文
if (startHour == 12 && startTOD)
{
startTime = new TimeSpan(24, startMinute, 0);
}
を追加しようとした24の正午に設定されていないだろう、なぜ私が理解することはできません得るものです
しかし、それはどちらもうまくいかなかった。値はまだ1.00でした。
場合
あなたがたstartTimeがfinishTime後にあるかどうかを確認する必要があり、2つの値を交換しますか? – mjwills
12PMは他の文脈なしで2PM後に来るので、2PM - 12PMを引くと-10時間になります。 startTimeがfinishTimeの後にあるかどうかをチェックし、trueの場合は2つの値を入れ替える必要があります。 – Steve
@mjwillis。本当の理由はありません。私はTimeSpansを扱っていたので、TimeSpansをすべて作成しました – maltman