DataGrid模板里有一条或N条数据,现在的问题是要计算出模板里面开始时间、结束时间控件上的值,例如有这样几条时间的数据,开始时间是:xx年xx月xx日xx小时,结束时间是:xx年xx月xx日xx小时,在计算的时候必须是这样计算,如果DataGrid里面有三条这样的数据,分别的日期时间都不同,我要将第二条的开始时间减去第一条的开始时间(的到的就是第一条的出行时间数),第三条 也就是最后一条数据的时候就拿它的结束时间减去第二条的开始时间(的到的就是第二条的出行时间数),计算出来的时间数都有一个TextBox用来显示,如果有N条数据的中间的计算方式就是按照第一条的时间方式去计算。
求高手帮忙解决!谢谢。
求高手帮忙解决!谢谢。
public void TimeCalculation()
{
#region 存在数据的处理 if (List1 == null)
{
return;
} if (List1.Count() == 1)
{
foreach (实体 obj in DataGrid.ItemsSource)
{ if (obj == null)
{
return;
} TextBox myDaysTime = DataGrid.Columns[4].GetCellContent(obj).FindName("txtTOTALDAYS") as TextBox; if (myDaysTime == null)
{
return;
} //如果出发时间与到达时间相等,视为当天往返,时间算一天
if (List1[0].STARTDATE == List1[0].ENDDATE && 方案设置实体.ANDFROMTHATDAY == "1")
{
myDaysTime.Text = "1天";
}
else
{
double TotalDays = 0;//出行天数
int TotalHours = 0;//出行小时
TimeSpan tsStart = new TimeSpan(Convert.ToDateTime(List1[0].STARTDATE).Ticks);
TimeSpan tsEnd = new TimeSpan(Convert.ToDateTime(List1[0].ENDDATE).Ticks);
TimeSpan ts = tsEnd.Subtract(tsStart).Duration(); TotalDays = ts.Days;
TotalHours = ts.Hours; int customhalfday = 方案设置实体.CUSTOMHALFDAY.ToInt32(); if (TotalHours >= customhalfday)//如果时间大于等于方案设置的时间,按方案标准时间计算
{
TotalDays += 1;
}
else
{
if (TotalHours > 0)
TotalDays += 0.5;
}
myDaysTime.Text = TotalDays.ToString() + "天";
}
}
}
#endregion #region 存在两条数据的处理
if (List1.Count() == 2)
{
foreach (实体 obje in DataGrid.ItemsSource)
{ if (obje == null)
{
return;
}
if (List1 == null)
{
return;
} TextBox myDaysTime = DaGrs.Columns[4].GetCellContent(obje).FindName("txtTOTALDAYS") as TextBox; if (myDaysTime == null)
{
return;
} //如果出发时间与到达时间相等,视为当天往返,时间算一天
if (List1[0].STARTDATE.Date == List1[1].ENDDATE.Date && 方案设置实体.ANDFROMTHATDAY == "1")
{
myDaysTime.Text = "1天";
}
else
{
double TotalDays = 0;
int TotalHours = 0;
TimeSpan tsStart = new TimeSpan(Convert.ToDateTime(List1[0].STARTDATE).Ticks);
TimeSpan tsEnd = new TimeSpan(Convert.ToDateTime(List1[1].ENDDATE).Ticks);
TimeSpan ts = tsEnd.Subtract(tsStart).Duration(); TotalDays = ts.Days;
TotalHours = ts.Hours; int customhalfday = 方案设置实体.CUSTOMHALFDAY.ToInt32(); if (TotalHours >= customhalfday)//如果出行时间大于等于方案设置的时间,按方案标准时间计算
{
TotalDays += 1;
}
else
{
if (TotalHours > 0)
TotalDays += 0.5;
}
myDaysTime.Text = TotalDays.ToString() + "天";
}
}
}
#endregion #region 存在多条的处理
if (List1.Count() > 2)
{
foreach (实体 objs in DataGrid.ItemsSource)
{
if (objs == null)
{
return;
} if (List1 == null)
{
return;
} TextBox myDaysTime = DaGrs.Columns[4].GetCellContent(objs).FindName("txtTOTALDAYS") as TextBox; if (myDaysTime == null)
{
return;
} for (int i = 0; i < List1.Count(); i++)
{
//如果是最后一条记录
if (i == List1.Count() - 1)
{
//如果出发时间与到达时间相等,视为当天往返,出行时间算一天
if (List1[i].STARTDATE.Date == List1[i - 1].ENDDATE.Date && 方案设置实体.ANDFROMTHATDAY == "1")
{
myDaysTime.Text = "1天";
}
else
{
double TotalDays = 0;//天数
int TotalHours = 0;//小时
TimeSpan tsStart = new TimeSpan(Convert.ToDateTime(List1[i].STARTDATE).Ticks);
TimeSpan tsEnd = new TimeSpan(Convert.ToDateTime(List1[i - 1].ENDDATE).Ticks);
TimeSpan ts = tsEnd.Subtract(tsStart).Duration(); TotalDays = ts.Days;
TotalHours = ts.Hours; int customhalfday = 方案设置实体.CUSTOMHALFDAY.ToInt32(); if (TotalHours >= customhalfday)//如果出行时间大于等于方案设置的时间,按方案标准时间计算
{
TotalDays += 1;
}
else
{
if (TotalHours > 0)
TotalDays += 0.5;
}
myDaysTime.Text = TotalDays.ToString() + "天";
}
}
else
{
if (i > 0)
{
//如果出发时间与到达时间相等,视为当天往返,出行时间算一天
if (List1[i].STARTDATE.Date == List1[i - 1].ENDDATE.Date && 方案设置实体.ANDFROMTHATDAY == "1")
{
myDaysTime.Text = "1天";
}
else
{
double TotalDays = 0;//天数
int TotalHours = 0;//小时
TimeSpan tsStart = new TimeSpan(Convert.ToDateTime(List1[i].STARTDATE).Ticks);
TimeSpan tsEnd = new TimeSpan(Convert.ToDateTime(List1[i - 1].STARTDATE).Ticks);
TimeSpan ts = tsEnd.Subtract(tsStart).Duration(); TotalDays = ts.Days;
TotalHours = ts.Hours; int customhalfday = 方案设置实体.CUSTOMHALFDAY.ToInt32(); if (TotalHours >= customhalfday)//如果出差时间大于等于方案设置的时间,按方案标准时间计算
{
TotalDays += 1;
}
else
{
if (TotalHours > 0)
TotalDays += 0.5;
}
myDaysTime.Text = TotalDays.ToString() + "天";
}
}
}
}
}
}
#endregion
}
可能会给你灵感
a(i+1)-a(i)