Logan V Ответов: 4

Установите пустую переменную datetime при проверке


как установить ChequeRddDate равным null, если он установлен после?

if (!string.IsNullOrEmpty(txtChequeRddDate.Text))
            {
                 ChequeRddDate = objCommon.FormatDate(txtChequeRddDate.Text.Trim());
            }
            else
            {
                DateTime?  = null;
            }


Что я уже пробовал:

Я не могу преобразовать в дату время значение NULL, если дата время проверяется в if условие

Karthik_Mahalingam

опубликуйте код для objCommon.Функция formatdate
что такое тип переменной ChequeRddDate
в противном случае синтаксис части является незаконным.

4 Ответов

Рейтинг:
2

OriginalGriff

Значения DateTime не могут быть нулевыми - они являются struct не class таким образом, они являются типом значения, а не ссылочным типом, и поэтому не могут быть нулевыми. Вы можете создать его версию типа Nullable, добавив "? " к объявлению, но это может вызвать его собственные проблемы. Я бы посоветовал вам использовать стандартную дату и время:

DateTime chequeRxDate;
if (!DateTime.TryParse(txtChequeRddDate.Text, out chequeRxDate))
   {
   chequeRxDate = DateTime.MinValue;
   }
Тогда у вас есть действительное значение даты и времени в любое время, с определенным значением, которое вы можете проверить на " недопустимую дату"


Рейтинг:
2

Maciej Los

Я бы предложил использовать:
значение datetime.Метод Синтаксического Анализа (String, IFormatProvider, DateTimeStyles) (System)[^]
или
значение datetime.Метод ParseExact (String, String, IFormatProvider) (System)[^]

Обратите внимание, что правильное преобразование зависит от настроек даты и времени ОС!

string s = "2016/07/19";
string format = "yyyy/MM/dd";
System.Globalization.CultureInfo provider = System.Globalization.CultureInfo.InvariantCulture;
DateTime? d1 = null;

try {
	d1 = DateTime.ParseExact(s, format, provider);
}
catch (FormatException ex) {
	Console.WriteLine("Incorrect date!");
}


Попробуй!


Richard Deeming

DateTime.TryParse или DateTime.TryParseExact так будет лучше.

Maciej Los

Хорошая альтернатива!

Рейтинг:
0

0x01AA

Прежде всего я бы использовал IsNullOrWhiteSpace вместо IsNullOrEmpty- Почему? Вы обрезаете текст перед преобразованием, и в случае, если ваш текст равен т. е.

Назначить null к ChequeRddDate вы должны определить его в качестве переменной значение null :

{
  //...

  // Define ChequeRddDate as nullabel
  DateTime?  ChequeRddDate;

  // This allow you to assign null if needed.
  ChequeRddDate= null;

  // ...
}

Надеюсь, это поможет.


Рейтинг:
0

Karthik_Mahalingam

Инициализировать ChequeRddDate переменная с Nullable DateTime тип
приведенный ниже код выполняет эту работу

DateTime?  ChequeRddDate = null;
           if (!string.IsNullOrEmpty(txtChequeRddDate.Text))
           {
                ChequeRddDate = objCommon.FormatDate(txtChequeRddDate.Text.Trim()); // make sure the method returns a nullable datetime object 
           }