-1

データ型を使用してデータテーブルから変数を取得していdatetimeます。このデータ型は"scheduledTime"列です。私はテーブルに異なる背景色を返すシステムクロックと datatime 変数を比較しようとしています。コードで結果が得られず、ガイダンスを取得する必要があります...また"scheduledTime"、条件でdatetime変数を定義する方法がわかりません

条件は次のとおりです。

遅い場合scheduledTime0-15mins背景色が赤..

遅い場合scheduledTime15min-30mins背景色が黄色..

遅い場合scheduledTime30mins-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;
    }
}
4

3 に答える 3

2

2 つの DateTime 値の分単位の差を取得するには、2 つの DateTime を減算してから 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"];
于 2013-01-14T06:01:57.063 に答える
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
            }
于 2013-01-14T06:13:37.537 に答える
0

次のようなTimeStanオブジェクトで操作してみてください。

TimeSpan timeSpan = currentTime - scheduleTime; 

その後、単にtimeSpan.TotalMinutesプロパティまたは他のTotal...プロパティを使用できます。

于 2013-01-14T05:58:21.670 に答える