none
Как можно проверить на пустату значения в DateTime? RRS feed

  • Вопрос

  • перед выполнением Расчетов хотелось бы проверить есть ли дата в текущей строке дата или нет!

    я нашел выход , но хотелось бы чтобы проверка осуществлялся над переменным DateTime!

    листинг проги такой:

    DateTime

     

    b = new DateTime();

     

     

    DateTime d = this.dateTimePicker1.Value;

     

     

    int a;

     

     

    if (textBox1.Text == "")

     

    MessageBox.Show("Pusto");

     

    else

    {

    b =

    Convert.ToDateTime(textBox1.Text);

     

     

    Convert.ToInt32((d - b).TotalDays);

     

    label1.Text = a.ToString();

    }

    a =

    }

     

    {

     

     

     

     

    8 октября 2010 г. 11:02

Ответы

  • Я бы порекомендовал добавить обработку исключений, потому, что в текстовое поле могут ввести просто текст, а не дату.

    И почему вместо TextBox, не использовать еще один DateTimePicker ? 

    Ваш код можно изменить вот так:

    DateTime b = new DateTime();
    
    DateTime d = this.dateTimePicker1.Value;
    
    int a = 0;
    
    if (textBox1.Text == String.Empty)
    {
      MessageBox.Show("Pusto");
    }
    else
    {
      try
      {
    
        b = Convert.ToDateTime(textBox1.Text);
        a = Convert.ToInt32((d - b).TotalDays);
      }
      catch (FormatException castEx)
      {
        MessageBox.Show(castEx.Message);
      }
    
      label1.Text = a.ToString();
    
    }
    

    • Предложено в качестве ответа A.Permyakov 8 октября 2010 г. 12:38
    • Помечено в качестве ответа PashaPashModerator 15 октября 2010 г. 11:42
    8 октября 2010 г. 12:38
  • Не обязательно использовать обработку исключений. Если мегаметод DateTime.TryParse.
    • Помечено в качестве ответа PashaPashModerator 15 октября 2010 г. 11:42
    8 октября 2010 г. 13:25
    Модератор

Все ответы

  • Не нашел в коде, где ты решил проблему. Вообщем DateTime - не Nullable тип, он не может принимать пустые значения. После DateTime b = new DateTime(); b принимает значение DateTime.MinValue, соответственно проверку, на присвоение вменяемого значения для даты можно сделать так:

          if (b == DateTime.MinValue) 
            Console.WriteLine("Значение не присвоено");
    
    

    8 октября 2010 г. 12:10
    Модератор
  • Я бы порекомендовал добавить обработку исключений, потому, что в текстовое поле могут ввести просто текст, а не дату.

    И почему вместо TextBox, не использовать еще один DateTimePicker ? 

    Ваш код можно изменить вот так:

    DateTime b = new DateTime();
    
    DateTime d = this.dateTimePicker1.Value;
    
    int a = 0;
    
    if (textBox1.Text == String.Empty)
    {
      MessageBox.Show("Pusto");
    }
    else
    {
      try
      {
    
        b = Convert.ToDateTime(textBox1.Text);
        a = Convert.ToInt32((d - b).TotalDays);
      }
      catch (FormatException castEx)
      {
        MessageBox.Show(castEx.Message);
      }
    
      label1.Text = a.ToString();
    
    }
    

    • Предложено в качестве ответа A.Permyakov 8 октября 2010 г. 12:38
    • Помечено в качестве ответа PashaPashModerator 15 октября 2010 г. 11:42
    8 октября 2010 г. 12:38
  • Не обязательно использовать обработку исключений. Если мегаметод DateTime.TryParse.
    • Помечено в качестве ответа PashaPashModerator 15 октября 2010 г. 11:42
    8 октября 2010 г. 13:25
    Модератор