Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C#If语句,其中日期为本月_C#_Date_If Statement_Filehelpers - Fatal编程技术网

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

C#If语句,其中日期为本月,c#,date,if-statement,filehelpers,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"; 这只

这是获取日期和月份的代码

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语句运行的代码示例

但if声明需要获得7月份的所有信息并将其相加。因此,从2012年1月7日到2012年7月31日。我无法更改SQL,因为它会弄乱程序的其余部分。我尝试获取当前日期,在其前面添加0,然后使用通配符

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

让我澄清一下这个帖子。“postingdate”值来自FileHelpers。按固定宽度将文本文件导入这些值。postingdate值看起来像“07/16/12”


因此,我想获取当前月份,然后如果postingdate值具有该月份的值,则运行if语句代码

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

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");
    }
}
同样如上所述,您可以将文本解析为日期。但是如果你只是对这个月感兴趣,那可能就没有必要了

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

为什么要这样做

if( date.Month == month)
{
   //your code...
}
如果rdr[“postingdate”]应该是一个日期,则将其转换为日期时间并进行合理的比较

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

那些somenick234是真实的帐户还是从某些软件/其他网站生成的?你所说的“无法更改SQL,因为它会扰乱程序的其余部分”是什么意思?您的意思是该命令在其他地方使用,还是说您不能想出正确的SQL语法?如果你能从数据库中获得正确的数据,你的生活可能会变得更轻松(你的程序也会更高效)。我曾尝试过两条SQL语句和两个读卡器,但都无法正常工作。这就是我所说的“它把程序搞砸了”@Peri你指的是哪个账户?@Ricardo。我看到很多昵称,比如xxx123、yyy234。他们几乎总是没有名声。怀疑它们不是真实的帐户。事实上,大多数问题似乎都源于这样一个事实,即他将所有内容都用作字符串,而不是使用与数据相关的类型。你需要检查年份和月份;否则,您将获得所有年份中给定月份的所有数据。@phoog但这对于手头的任务来说可能没问题。谁能说呢?@ReacherGilt当然,但在没有保证这不会成为问题的具体要求的情况下,更安全的做法是假设它会成为问题。(另外,这是一个我在实际代码中多次遇到的bug。)这是有道理的。我知道的不多,但应该能够把它当作一个日期来解析。我现在正在尝试。你的例子帮助我使它工作。谢谢你的快速回答。我觉得有点傻,但我正在学习。谢谢你,不客气。请记住,如果DateTime.TryParse语句失败,您可能需要处理它——如果rdr[“postingdate”]无效,您的程序应该怎么做?通过我的另一个使用FileHelper的程序将日期放入access数据库的方式,文本文件的值周围有很多空格。Access然后存储它,而不使用空格。如果文件没有正确输入,FileHelpers将抛出一个错误。我写了一篇文章,让它在我的另一个程序中跳过这个值。这些值大多是几美分,这个程序只是一个表示。几分钱不要紧。到目前为止,FileHelpers还没有出现错误。
if(DateTime.TryParse(rdr["postingdate"].ToString(), rdrDateTime))
{
    // proceed as planned
    if (rdrDate.Month == DateTime.Now.Month) 
    {
       // and so on.
    }
}