2
string month = DateTime.Now.Month.ToString();
string CommandText = "SELECT slocref.slocname, partstuff.quantity, partstuff.currency, partstuff.postingdate" + " FROM partstuff INNER JOIN slocref ON partstuff.sloc = slocref.slocvalue";

これは日付と月を取得するコードです。

if (Regex.IsMatch(rdr["postingdate"].ToString(), "0" + month + "*"))
{
    if (rdr["slocname"].ToString() == "Answer/Slatwall")
    {
        string quantity = rdr["quantity"].ToString();
        string currency = rdr["currency"].ToString();
        answertotalmonth += float.Parse(currency);
        label100.Text = "$" + answertotalmonth.ToString("#,##0.00");
    }
}

これは、if ステートメントによって実行されるコードの単なる例です。

ただし、if ステートメントは 7 月のすべての情報を取得して加算する必要があります。つまり、2012 年 7 月 1 日から 2012 年 7 月 31 日までです。プログラムの残りの部分を台無しにするため、SQL を変更することはできません。現在の日付を取得し、その前に 0 を追加してから、ワイルドカードを使用しようとしました。

この if ステートメントについて少し説明が必要です。

この投稿を明確にさせてください。「postingdate」値は FileHelpers から取得されます。これらの値に固定幅でテキスト ファイルをインポートします。投稿日の値は「07/16/12」のようになります

したがって、今月の値を取得し、postingdate の値がその月の値である場合は、if ステートメント コードを実行します。

4

2 に答える 2

1

なぜこれを行うのですか?

 if (Regex.IsMatch(rdr["postingdate"].ToString(), "0" + month + "*"))

rdr["postingdate"] が日付であると想定されている場合は、それを日時に変換し、適切な比較を行います。

if(DateTime.TryParse(rdr["postingdate"].ToString(), rdrDateTime))
{
    // proceed as planned
    if (rdrDate.Month == DateTime.Now.Month) 
    {
       // and so on.
    }
}
于 2012-07-20T18:35:43.577 に答える
0

問題を正しく理解しているかどうかはわかりませんが、DataTime の month プロパティを一致させてみませんか。

if( date.Month == month)
{
   //your code...
}

また、上記のように、テキストを日付として解析できます。ただし、その月だけに関心がある場合は、必要ないかもしれません。

編集:コメントで述べたように、年も確認する必要があります。したがって、完全な DateTime オブジェクトとしてパリ​​ングする方がよいでしょう。

于 2012-07-20T18:31:58.387 に答える