我使用datetime
数据类型的数据表中有一个变量。此数据类型是"scheduledTime"
列。我试图将datatime变量与系统时钟进行比较,系统时钟会在我的表上返回不同的背景颜色。我的代码没有得到任何结果,我得到一些指导...我也不确定如何在我的条件中定义"scheduledTime"
datetime变量
以下是条件:
如果scheduledTime
迟到0-15mins
,则背景颜色为红色..
如果scheduledTime
迟到15min-30mins
,则背景颜色为黄色..
如果scheduledTime
迟到30mins-2hours
,则背景颜色为绿色..
//Row Rendering event
public void Row_Rendering()
{
DateTime currentTime = DateTime.New();
DateTime scheduledTime = "SCHD DTM" //<--- this is the name of the column from the table
int i = DateTime.Compare(scheduleTime,currentTime);
if (i <= 0.25)
{
Style.SelectionBackColor = Color.Red;
ForeColor = Color.White;
}
else if (i > 0.25 && i <=0.5)
{
Style.SelectionBackColor = Color.Yellow;
ForeColor = Color.Black;
}
else if (i > 0.5 && i <=2)
{
Style.SelectionBackColor = Color.Green;
ForeColor = Color.White;
}
}
答案 0 :(得分:2)
为了获得两个DateTime值之间的分钟差异,您可以减去两个DateTimes,然后在它们上面调用TotalMinutes:
double differenceInMinutes = (currentTime - scheduledTime).TotalMinutes;
然后,您可以相应地使用differenceInMinutes
进行计算:
if (differenceInMinutes <= 15) then
Style.SelectionBackColor = Color.Red;
ForeColor = Color.White;
else if (differenceInMinutes > 15 & differenceInMinutes <= 30) then
Style.SelectionBackColor = Color.Yellow;
ForeColor = Color.Black;
else if (differenceInMinutes > 30 & differenceInMinutes <= 120)
Style.SelectionBackColor = Color.Green;
ForeColor = Color.White;
<强>已更新强>
下面是一个如何从DataTable获取DateTime值的示例。假设DataTable存储在名为myDataTable
的变量中,并且您当前位于第一行(行索引为0):
DateTime scheduledTime = myDataTable.Rows[0]["SCHD DTM"];
答案 1 :(得分:0)
尝试使用TimeStan对象操作:
TimeSpan timeSpan = currentTime - scheduleTime;
之后,您只需使用timeSpan.TotalMinutes
属性或其他Total...
属性。
答案 2 :(得分:0)
您可以直接比较TimeSpan值
DateTime currentTime = DateTime.Now;
DateTime scheduledTime = dataReader.GetDateTime(0);
TimeSpan timeDifference = scheduledTime - currentTime;
if (timeDifference <= new TimeSpan(0, 15, 0)) //less 15m
{
Style.SelectionBackColor = Color.Red;
ForeColor = Color.White;
}
else if (timeDifference <= new TimeSpan(0, 30, 0)) //15m - 30m
{
Style.SelectionBackColor = Color.Yellow;
ForeColor = Color.Black;
}
else if (timeDifference <= new TimeSpan(2, 0, 0))//30m - 2hr
{
Style.SelectionBackColor = Color.Green;
ForeColor = Color.White;
}
else // > 2hr
{
//:todo: create styles for time difference > 2 hr
}