0

我在一个类中使用一种方法,它从文本文件中读取每一行。文本文件在标题区域包含一个日期字段。

其他行项目包含一些帐户信息。该代码从每个行项目中读取数据。我想根据行项目中的帐户代码更新日期。但是,只要找到下面显示的帐户代码之一,我只想更新一次日期。就我而言,每当代码找到任何这些帐户代码时,它都会更新日期。

假设标题日期是“04/12/2012”,第一个行项目的帐户代码是“140901”,那么它将更新日期为“04/10/2012”。
现在,如果第二行项目包含帐户代码“141202”,它会再次将日期更新为“04/08/2012”,依此类推。日期应更新为“2012 年 4 月 10 日”并停止更新,即使它找到一些其他帐户代码。

请让我知道我做错了什么。

 public void UpdateDate(HeaderRecord _header, AccountSeries accountCode)
 {
     DateTime date = _header.Date;

     bool dateChanged = false;

     if (!dateChanged)
     {
         if (accountCode.Code == "140901" || accountCode.Code == "141202" ||
             accountCode.Code == "141207" || accountCode.Code == "141303" || 
             accountCode.Code == "141301" || accountCode.Code == "141001" ||
             accountCode.Code == "141004" || accountCode.Code == "141003" || 
             accountCode.Code == "141005" )     
         {
             if (!CalendarValidatorHelper.Helper(date.AddDays(-2.0)))
             {
                 if (!CalendarValidatorHelper.Helper(date.AddDays(-3.0)))
                 {
                     date = date.AddDays(-3.0);
                     _header.Date = date;
                     dateChanged = true;
                 }
                 else if (!CalendarValidatorHelper.Helper(date.AddDays(-4.0)))
                 {
                     date = date.AddDays(-4.0);
                     _header.Date = date;
                     dateChanged = true;
                 }
                 else if (!CalendarValidatorHelper.Helper(date.AddDays(-5.0)))
                 {
                     date = date.AddDays(-5.0);
                     _header.Date = date;
                     dateChanged = true;
                 }
             }
             else
             {
                 date = date.AddDays(-2.0);
                 _header.Date = date;
                 dateChanged = true;
             }
         }
     }
 }
4

1 回答 1

1

看起来您只需要测试您要分配的新日期是否小于当前日期。

IE

 date = date.AddDays(-3);

 if(_header.Date < date)
 {
     _header.Date = date;
     dateChanged = true;
 }
于 2012-04-17T19:35:57.927 回答