2012-03-08 69 views
0

我想通過考慮他目前的年齡來計算出生年份,例如他的年齡是30歲,在datetimepicker框中,日期應顯示爲01/01/1982 。它應該是自動計算。我想通過考慮他目前的年齡來計算出生年份,

  int todayyears = int.Parse (DateTime.Now.Year.ToString()); 

     int a = int.Parse (int.Parse(txt_age.Text).ToString()); 

     string dif = (todayyears - a).ToString(); 

     txt_dob.Text = dif; 

這裏txt_age的輸入值給出,txt_dobtxt_age給出的輸入之後自動diaplayed出生日期。

+1

爲什麼要將DateTime.Now.Year轉換爲字符串,然後再解析它? – 2012-03-08 09:37:05

+0

以及爲什麼要將txt_age.Text轉換爲int爲字符串並再次轉換爲int? :) – arunes 2012-03-08 09:38:09

+0

你爲什麼要將int轉換爲字符串,然後回到int(變量「a」) – Doomsknight 2012-03-08 09:38:13

回答

6

它看起來像你正在轉換的方式太多的東西字符串,沒有理由。

如果總是要顯示的1月1日,你只需要:

// Note: use int.TryParse to avoid exceptions if the user input isn't an integer 
int age = int.Parse(txt_age.Text); 

DateTime date = new DateTime(DateTime.Today.Year - age, 1, 1); 

txt_dob.Text = date.ToString(); // Or use a specific format 

注意,「出生日期」,在「txt_dob」是不恰當的,因爲這不是用戶的出生的日期,僅在1月1日的出生年份這是非常不同的。

+0

完美而簡單! ! – V4Vendetta 2012-03-08 09:40:46

2

應該是這樣的:

txt_dob.Text = DateTime.Now.AddYears(int.Parse(txt_age.Text) * -1).ToString("01/01/yyyy"); 
+0

OP要顯示「01/01/THE_YEAR」。在你的例子中,它會顯示「current_day/THE_YEAR」。 – ken2k 2012-03-08 09:42:31

+0

是的,我知道。固定 – Reniuz 2012-03-08 09:45:50

+0

@ V4Vendetta我會這樣做,你這樣做,這就是爲什麼人們不同:) – Reniuz 2012-03-08 09:59:42

1

試試這個

int todayyears = DateTime.Now.Year; 
      int a = int.Parse(txt_age.Text); 
      string dob = new DateTime(todayyears - a, DateTime.Today.Month, DateTime.Today.Day); 
txt_dob.Text=dob; 
0

事情是這樣的:

int age; 
if(int.TryParse(txt_age.Text,out age)) 
{ 
    txt_dob.Text= new DateTime(DateTime.Now.Year-age,1,1).ToShortDateString(); 
} 
2

您可以創建與給定的年份日期時間。

因此計算一年。 (當年 - 年齡)。

int Age = 30; // obtain from your given field. 
int YofBirth = DateTime.Now.Year - Age; 

DateTime d = new DateTime(YofBirth , 1, 1); 

然後使用此Datetime d來設置字段。