2013-07-03 125 views
1

我的问题是,如何在日期格式为“yyyymmdd”的textbox1上将日期添加到日期输入中的6个月。 我尝试了下面的代码,但我有不同的答案。 我输入“20130703”我得到这样的回答:“20140003”将月份添加到输入日期

private void button1_Click(object sender, EventArgs e) 
{ 
    string inputString = textBox1.Text; 
    DateTime dt = DateTime.ParseExact(inputString, "yyyymmdd", 
             CultureInfo.InvariantCulture); 
    dt = DateTime.Now.Date.AddMonths(6); 
    textBox2.Text = dt.ToString("yyyymmdd"); 
} 
+0

你已经用当前日期加上6个月覆盖了输入日期(并使用错误的格式说明符:应该是MM) –

回答

8

您的日期格式错误(应该是MM),并且您不需要使用DateTime.Now,因为它将覆盖您解析的dt值。

DateTime dt = DateTime.ParseExact(inputString, "yyyyMMdd", CultureInfo.InvariantCulture); 
dt = dt.AddMonths(6); 
+1

+1有关。 'MM'斑点! –

+2

感谢这! =) – QKWS

4
  string inputString = textBox1.Text; 
      DateTime dt = DateTime.ParseExact(inputString, "yyyyMMdd", CultureInfo.InvariantCulture); 
      dt = dt.AddMonths(6); 
      textBox2.Text = dt.ToString("yyyymmdd"); 

如果我理解正确的话,你要到6个月添加到解析日期,而不是6个月到今天的日期?尝试上面的代码

+0

嗨!我尝试过这个。但是如果我输入“20130703”,我也得到了“20130703”.. – QKWS

+0

是的,像@keyboardP指出的那样 - 它也与无效格式模式 – TGH

2

如下更改代码:

private void button1_Click(object sender, EventArgs e) 
{ 
    string inputString = textBox1.Text; 
    DateTime dt = DateTime.ParseExact(inputString, "yyyyMMdd", System.Globalization.CultureInfo.InvariantCulture); 
    dt = dt.Date.AddMonths(6); 
    textBox2.Text = dt.ToString("yyyyMMdd"); 
} 

请注意格式。