Answers:
尝试以下
double hours = (b-a).TotalHours;
如果您只希望小时差不包括天差,可以使用以下方法
int hours = (b-a).Hours;
这两个属性之间的差异主要是在时间差异超过1天时看到的。Hours属性将仅报告两个日期之间的实际时差。因此,如果两个日期相差100年却在一天中的同一时间发生,则小时数将返回0。但是TotalHours将返回两个日期之间发生的总小时数之间的差(在这种情况下为876,000小时)。
另一个区别是TotalHours将返回小数小时。这可能是您想要的,也可能不是。如果没有,Math.Round可以根据您的喜好进行调整。
使用此方法将显示时间与时间的b / w。
private void HoursCalculator()
{
var t1 = txtfromtime.Text.Trim();
var t2 = txttotime.Text.Trim();
var Fromtime = t1.Substring(6);
var Totime = t2.Substring(6);
if (Fromtime == "M")
{
Fromtime = t1.Substring(5);
}
if (Totime == "M")
{
Totime = t2.Substring(5);
}
if (Fromtime=="PM" && Totime=="AM" )
{
var dt1 = DateTime.Parse("1900-01-01 " + txtfromtime.Text.Trim());
var dt2 = DateTime.Parse("1900-01-02 " + txttotime.Text.Trim());
var t = dt1.Subtract(dt2);
//int temp = Convert.ToInt32(t.Hours);
//temp = temp / 2;
lblHours.Text =t.Hours.ToString() + ":" + t.Minutes.ToString();
}
else if (Fromtime == "AM" && Totime == "PM")
{
var dt1 = DateTime.Parse("1900-01-01 " + txtfromtime.Text.Trim());
var dt2 = DateTime.Parse("1900-01-01 " + txttotime.Text.Trim());
TimeSpan t = (dt2.Subtract(dt1));
lblHours.Text = t.Hours.ToString() + ":" + t.Minutes.ToString();
}
else
{
var dt1 = DateTime.Parse("1900-01-01 " + txtfromtime.Text.Trim());
var dt2 = DateTime.Parse("1900-01-01 " + txttotime.Text.Trim());
TimeSpan t = (dt2.Subtract(dt1));
lblHours.Text = t.Hours.ToString() + ":" + t.Minutes.ToString();
}
}
使用您的字段ID
var t1捕获值为4:00 AM
检查此代码可能对某人有用。