如何将DateTime数据类型与DateTime.Now进行比较

时间:2013-01-14 05:55:04

标签: c# .net

我使用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;
    }
}

3 个答案:

答案 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
            }