2017-08-11 76 views
0

我在這裏提供了一個輸入信息但代碼不起作用的場景。當我輸入12/11/2015時,Address2Panel顯示了什麼。這是錯誤的,因爲沒有更多的日期可以輸入,因爲人A出生在2015年11月12日。該邏輯應輸入過去5年的地址。但是,如果出生日期差距不比當前日期的5年時間更短,那就會出錯。日期時間和公式改進C#

人生日= 2015年12月11日

某甲StartLiving = 2015年12月11日,因爲它的一天,他/她就誕生了。 不應該顯示Address2Panel

int CurrentDateInMonths = (((DateTime.Today.Year) * 12) + (DateTime.Today.Month)); 
    static int AlienMonthsAtCurrentAddress = 0; 

     DateTime myDateTime; 
     //LivedHere = 12/11/2015 
     myDateTime = DateTime.Parse(LivedHere.Text); 

     AlienMonthsAtCurrentAddress = (CurrentDateInMonths - (((Convert.ToInt16(myDateTime.Year)) * 12) + Convert.ToInt16(myDateTime.Month))); 
     if (AlienMonthsAtCurrentAddress < 60) 
     { 
      Address2Panel.Visible = true;//shows the Address2Panel 
     } 
     else 
     { 
      ClearAddress2Panel();//hides also the Address2Panel 
     } 

我應該如何提高我的公式和日期時間處理任何建議?

回答

0

無需日期轉換成個月,使用DateTime.Subtract方法減去日期:
從MSDN,DateTime.Subtract法減去這個instance.It指定的日期和時間,返回時間跨度對象具有物業Days

static int AlienMonthsAtCurrentAddress = 0; 
try 
{ 

    DateTime myDateTime; 
    myDateTime = DateTime.Parse(LivedHere.Text); 

    // If you don't wish to subtract from today's date use required date in place of DateTime.Now 
    TimeSpan span = DateTime.Now.Subtract (myDateTime); 
    if (span.Days < 60) 
    { 
     Address2Panel.Visible = true;//shows the Address2Panel 
    } 
    else 
    { 
     ClearAddress2Panel();//hides also the Address2Panel 
    } 

} 
catch { } 
+0

感謝您對DateTime操作的想法。但它不能解決我的問題。當人A出生日期= 12/11/2000,並且我把12/11/2015作爲LivedHere地址。它沒有顯示我需要的額外字段。它應該顯示出來,因爲這個想法是輸入過去5年的地址。和12/11/2015不是5年,當前日期是8/11/2017 – Ping

+0

無論日期是什麼,使用DateTime.Subtract恕我直言,離開!我編輯了我的答案 – Winnie

0

你可以檢查年,月,日與單獨的邏輯,然後讓他們一起:

DateTime date = new DateTime(2015,11,12) 
DateTime input = getDate() 
int years = input.Year - date.Year - 1 
years += If(input.Month > date.Month, 1, 0) 
years += If(input.Month = date.Month AndAlso input.Day >= date.Day, 1, 0) 

這將輸出兩天之間的確切年數(截斷生成的整數)。你只需要將它與5比較,在你的情況下