我正在使用sql server存储员工午餐时间和使用asp.net计算差异,如下所示。现在我想看看它们是否超过30分钟,那么值应该是红色。
if (e.Row.RowType == DataControlRowType.DataRow)
{
//Lunch Total Time
Label lunIn = (Label)e.Row.FindControl("lblLunIn");
Label lunOut = (Label)e.Row.FindControl("lblLunOut");
Label lunTotal = (Label)e.Row.FindControl("lblLunTotal");
lunTotal.Text = Convert.ToString(Convert.ToDateTime(lunOut.Text) - Convert.ToDateTime(lunIn.Text));
}
我该怎么办呢?感谢
答案 0 :(得分:0)
一般来说,我更喜欢使用真实数据源而不是GridViewRows
中的文本。您可以通过RowDataBound
在e.Row.DataItem
轻松获取。通过这种方式,您可以防止本地化问题以及您对原始数据的处理。
但是,要从两个DateTime
获得分钟的时间,您可以减去它们并使用返回的TimeSpan
s TotalMinutes
属性:
DateTime dtIn = Convert.ToDateTime(lunIn.Text);
DateTime dtOut = Convert.ToDateTime(lunOut.Text);
TimeSpan duration = dtOut - dtin;
lunTotal.Text = duration.ToString();
if(duration.TotalMinutes > 30)
{
e.Row.BackColor = Color.Red;
// or maybe you just want to change the color of the Label
lunTotal.ForeColor = Color.Red;
}