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”

因此,我想获取当前月份,然后如果发布日期值具有该月份的值,则运行 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 的月份属性:

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

同样如上所述,您可以将文本解析为日期。但是,如果您只对可能没有必要的月份感兴趣。

编辑:如评论中所述,您还必须检查年份。因此,最好将其解析为完整的 DateTime 对象。

于 2012-07-20T18:31:58.387 回答