我有一个12小时制时钟,它可以计算两次小数点之间的差值。它贯穿下面的循环,但在测试后,我看到当我在12:00到12:59(AM或PM)之间输入时间时,它发布了完全错误的时间。问题是第12个小时是特殊情况,不需要增加或减少12个小时。我该如何解决这个问题,以便用十进制发布正确的时间?12小时制,12小时制十进制
另外,因为我发布这个我有另一个问题;我怎样才能轻松地计算出十进制的总时间?
下面是GUI的图片,以便您了解我们正在处理的内容。 http://imgur.com/y7JezcC
protected void CalculateButton_Click(object sender, EventArgs e)
{
//Initializing
TextBox[] textboxesIn = new TextBox[7];
TextBox[] textboxesOut = new TextBox[7];
DropDownList[] dropdownIn = new DropDownList[7];
DropDownList[] dropdownOut = new DropDownList[7];
Label[] labels = new Label[7];
//Week 1 in textboxes
textboxesIn[0] = MondayW1InTextBox;
textboxesIn[1] = TuesdayW1InTextBox;
textboxesIn[2] = WednesdayW1InTextBox;
textboxesIn[3] = ThursdayW1InTextBox;
textboxesIn[4] = FridayW1InTextBox;
textboxesIn[5] = SaturdayW1InTextBox;
textboxesIn[6] = SundayW1InTextBox;
//Week 1 out textboxes
textboxesOut[0] = MondayW1OutTextBox;
textboxesOut[1] = TuesdayW1OutTextBox;
textboxesOut[2] = WednesdayW1OutTextBox;
textboxesOut[3] = ThursdayW1OutTextBox;
textboxesOut[4] = FridayW1OutTextBox;
textboxesOut[5] = SaturdayW1OutTextBox;
textboxesOut[6] = SundayW1OutTextBox;
//Week 1 in drop down list
dropdownIn[0] = MondayW1InDropDown;
dropdownIn[1] = TuesdayW1InDropDown;
dropdownIn[2] = WednesdayW1InDropDown;
dropdownIn[3] = ThursdayW1InDropDown;
dropdownIn[4] = FridayW1InDropDown;
dropdownIn[5] = SaturdayW1InDropDown;
dropdownIn[6] = SundayW1InDropDown;
//Week 1 out drop down list
dropdownOut[0] = MondayW1OutDropDown;
dropdownOut[1] = TuesdayW1OutDropDown;
dropdownOut[2] = WednesdayW1OutDropDown;
dropdownOut[3] = ThursdayW1OutDropDown;
dropdownOut[4] = FridayW1OutDropDown;
dropdownOut[5] = SaturdayW1OutDropDown;
dropdownOut[6] = SundayW1OutDropDown;
//Week 1 labels
labels[0] = MondayW1Label;
labels[1] = TuesdayW1Label;
labels[2] = WednesdayW1Label;
labels[3] = ThursdayW1Label;
labels[4] = FridayW1Label;
labels[5] = SaturdayW1Label;
labels[6] = SundayW1Label;
for (int i = 0; i < 7; i++)
{
DateTime dt = DateTime.ParseExact(textboxesIn[i].Text.PadLeft(4, '0'), "HHmm", CultureInfo.InvariantCulture);
string timestring = dt.ToString("h:mm");
labels[i].Text = timestring;
DateTime timeIn = DateTime.ParseExact(textboxesIn[i].Text.PadLeft(4, '0'), "HHmm", CultureInfo.InvariantCulture);
DateTime timeOut = DateTime.ParseExact(textboxesOut[i].Text.PadLeft(4, '0'), "HHmm", CultureInfo.InvariantCulture);
if (dropdownIn[i].SelectedValue == "PM")
{
timeIn = timeIn.AddHours(12);
}
if (dropdownOut[i].SelectedValue == "PM")
{
timeOut = timeOut.AddHours(12);
}
labels[i].Text = (timeOut - timeIn).TotalHours.ToString("f2");
}
}
为什么不把AM/PM添加到时间字符串并使用格式“HHmm tt” – 2014-10-03 18:44:32