0

我得到了 maskedTextBox1,其中我得到了格式和掩码的日期,DD/MM/YYYY在 textBox2 中得到了 int 值。

现在我需要将 int number 添加到 maskedTextBox1 值并将其显示在下一个 maskedtextbox2 中。int 值应添加到天数中,例如:20/09/2013+ 8 =28/09/2013

请问可以怎么做?

我试过这个:

string date1 = maskedTextBox2.Text;
string nodays = zpocdnu.Text;

maskedTextBox1.Text = date1 + nodays;

但是由于我在 c# 中的时间不长,所以我不确定应该选择哪种转换。

感谢您提前提供帮助。

编辑 - 这就是答案 - 感谢 Rajesh Subramanian:

        private void zpocdnu_TextChanged(object sender, EventArgs e)
    {
        DateTime rs;

        CultureInfo ci = new CultureInfo("en-IE");

        if (DateTime.TryParseExact(this.maskedTextBox2.Text, "dd/MM/yyyy", ci, DateTimeStyles.None, out rs) && zpocdnu.TextLength > 0)
        {


            DateTime today = DateTime.Parse(maskedTextBox2.Text);
            DateTime answer = today.AddDays(Convert.ToInt32(zpocdnu.Text) - 1);


            maskedTextBox1.Text = answer.ToString();

        }


    }
4

5 回答 5

7

您可以执行以下操作,

DateTime today = DateTime.Parse(maskedTextBox1.Text);
DateTime answer = today.AddDays(Convert.ToInt32(zpocdnu.Text));

maskedTextBox2.Text = answer.ToString() ;
于 2013-09-10T14:49:20.650 回答
1

首先,您需要将 转换stringdatetime,然后添加日期,然后在文本框中显示:示例:

string date1= "09/10/2013";
string ndays = "5";
DateTime dt = Convert.ToDateTime(date1);
dt.AddDays(int.Parse(ndays));
string result = dt.ToShortDateString();
于 2013-09-10T14:54:43.757 回答
1

错误的用户输入不会引发异常的解决方案是:

    DateTime dt;
    int days = 0;
    bool success = Int32.TryParse(maskedTextBox2.Text, out days);
    success |= DateTime.TryParse(zpocdnu.Text, out dt);
    if (success)
        maskedTextBox2.Text = dt.AddDays(days).ToString();
于 2013-09-10T14:56:18.070 回答
1

可以将 datetimepicker 配置为仅接受 atetime 值的文本框,而不是屏蔽文本框。因为结果值已经是一个日期时间值,并且您将其放入另一个日期时间选择器,所以不需要转换。

于 2013-09-10T15:10:34.713 回答
0

而不是,使用MSDN上所说的TryParse()Convert.ToInt32()会更好:

使用 ToInt32(String) 方法相当于将值传递给 Int32.Parse(String) 方法。value 是通过使用当前线程区域性的格式约定来解释的。如果您不想在转换失败时处理异常,则可以改为调用 Int32.TryParse 方法。它返回一个布尔值,指示转换是成功还是失败。

您将制作如下扩展方法:

 public static class StringExtensions
 {
      public static int ToInt(this string str)
      {
            int n;
            if(Int32.TryParse(str, out n))
               return n;
            else
               return 0;
      }
}

在此之后,您将在 Rajesh 的回答中使用它,如下所示:

DateTime today = DateTime.Parse(maskedTextBox1.Text);
DateTime answer = today.AddDays(zpocdnu.Text.ToInt());

maskedTextBox2.Text = answer.ToString() ;
于 2013-09-10T14:57:09.067 回答