2012-04-17 10 views
0

私はテキストファイルから各行を読み込むクラスのメソッドを使用しています。 テキストファイルには、ヘッダー領域に1つの日付フィールドが含まれています。C#の日付フィールドの更新

他の広告申込情報には、アカウント情報が含まれています。このコードは、各広告申込情報からデータを読み取ります。広告申込情報のアカウントコードに基づいて日付を更新したいとします。しかし、以下に示すアカウントコードのいずれかが見つかるたびに、日付を1回更新したいと考えています。私の場合は、コードがこれらの口座コードのいずれかを見つけ出すたびに毎回日付を更新しています。

ヘッダーの日付が'04/12/2012 'で、最初の広告申込情報のアカウントコードが「140901」とすると、日付が「04/10/2012」に更新されます。
2行目の項目に「141202」というアカウントコードが含まれている場合は、「04/08/2012」のように再度日付を更新します。日付は "04/10/2012"に更新され、他のアカウントコードが見つかった場合でも更新を停止する必要があります。

私が間違っていることを教えてください。

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; 
      } 
     } 
    } 
} 
+0

上記のコードは、現状では、変数は 'dateChanged'は地元の一つであり、メソッドが終了するので、実際に使用されることはありません。 'if(!dateChanged)'ブロックは常に入力され、変数 'dateChanged'は決して再び読み取られません。メソッドが2回目に入力された場合は、もちろん新しい 'dateChanged'です。 –

答えて

1

割り当てたい新しい日付が現在の日付よりも小さいかどうかをテストする必要があるようです。

IE

date = date.AddDays(-3); 

if(_header.Date < date) 
{ 
    _header.Date = date; 
    dateChanged = true; 
} 
+0

ヘッダー日付には任意の日付を使用できます。必ずしも現在の日付ではありません。 – ncoder

+0

それでは、単にdateChanged == trueをテストする必要があるように思えます。 IE: 'if(!dateChanged){_header.Date = date; dateChanged = true; } ' – Tejs

関連する問題