C#If语句,其中日期是本月

时间:2012-07-20 18:28:24

标签: c# date if-statement filehelpers

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年1月7日到2012年7月31日。我无法更改SQL,因为它会弄乱程序的其余部分。我试图获取当前日期,在它前面添加0,然后使用通配符。

在这个if语句上需要一点指示。

让我澄清一下这篇文章。 “postsdate”值来自FileHelpers。将固定宽度的文本文件导入这些值。 postdate值看起来像“07/16/12”

所以,我想获得当前月份,然后如果postdate值具有该月份的值,则运行if语句代码。

2 个答案:

答案 0 :(得分:1)

你为什么要这样做?

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

如果rdr [" postdate"]应该是一个日期,请将其转换为日期时间并进行合理的比较。

if(DateTime.TryParse(rdr["postingdate"].ToString(), rdrDateTime))
{
    // proceed as planned
    if (rdrDate.Month == DateTime.Now.Month) 
    {
       // and so on.
    }
}

答案 1 :(得分:0)

我不确定我是否正确理解您的问题,但为什么不只是匹配DataTime的月份属性:

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

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

修改:如评论中所述,您还必须检查年份。因此,最好将其作为完整的DateTime对象进行削减。