C#에서 웹 양식을 작성 중입니다. 시작 시간 (시작 시간, 시작 분, 시작 시간 (AM 또는 PM)) 및 종료 시간 (종료 시간)은 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:00 시부 터 종료 시간 4:00 오후 선택하면, 라벨 2 시간을 보여줍니다. 내가 시작 시간 12:00 시부 터 종료 시간 2:00 오후 선택하는 경우 그러나, 나는 -10 시간을 얻는다. 이것은 내가 12:00 PM에 디버깅 할 때 내가 시작 시간을 위해 무엇을 얻을
.
{1.00:00:00}
여기
내가 오후 5:00
{17:00:00}
내가 문 만약 내가 심지어 추가 시도 (24)에 왜가 설정되지 않습니다 정오를 알아낼 수 없습니다 선택할 때 무엇을 얻을
if (startHour == 12 && startTOD)
{
startTime = new TimeSpan(24, startMinute, 0);
}
하지만 그 중 하나가 작동하지 않았다. 가치는 여전히 1.00입니다.
경우
당신은 startTime을이 finishTime 후 있는지 확인해야하고 두 값을 교환? – mjwills
12PM은 다른 문맥없이 2PM 이후에 나오므로 2PM - 12PM을 뺄 때 -10 시간을 얻습니다. startTime이 finishTime 뒤에 있는지 확인하고 true이면 두 값을 스와핑해야합니다. – Steve
@mjwillis. 진짜 이유가 없어. 나는 TimeSpans를 다루므로 모든 TimeSpans를 만들었습니다. – maltman