2017-01-06 2 views
1

Я хочу сравнить значение ячейки (Datetime) с пустым или «Нет». Если он не пуст или нет, то после него будет добавлен параметр. Я бы очень признателен вашей помощи.сравнить значение Datetime с нулевым или конкретным текстом в C#

Спасибо, это дает мне не может преобразовать время дата ошибки струнной

command.Parameters.AddWithValue("@pin", row.Cell(2).GetValue<string>()); 
command.Parameters.AddWithValue("@Amount", row.Cell(3).GetValue<int>()); 
if(row.Cell(4).GetValue<DateTime>() == "" || row.Cell(4).GetValue<DateTime>() =="none") 
{ 
} 
command.Parameters.AddWithValue("@Expirydate", row.Cell(4).GetValue<DateTime>()); 
          command.ExecuteNonQuery(); 
+0

Это относится к электронной таблице, например, к файлу Excel? – Jake

+0

Возможный дубликат: http://stackoverflow.com/a/4604459/3270427 – McNets

+0

Да, Джейк Я читаю данные из листа Excel –

ответ

0

Прочитайте его как строку сначала, проверьте его, , затем преобразуйте его в DateTime.

var s = row.Cell(4).GetValue<String>(); 
is (s != null && s != "" && s != "none") 
{ 
    var d = DateTime.Parse(s); 
    command.Parameters.AddWithValue("@Expirydate", d); 
} 

Или передумать проблему. Вместо того, чтобы полагаться на magic number, просто заполнить дату истечения срока действия, когда она является действительной датой, например, так:

var s = row.Cell(4).GetValue<String>(); 
DateTime d; 
if (DateTime.TryParse(s, out d)) 
{ 
    command.Parameters.AddWithValue("@Expirydate", d); 
} 

С «ни один» и «» не являются действительными даты, это будет работать, а кроме того, она будет продолжайте работать, если кто-то помещает «Нет», «Н/Д», «Никогда» и т. д.

+0

Спасибо, человек, но я сделал с моим путем. 'var expiry = row.Cell (4) .GetValue (); if (expiry! = "None" && expiry! = "") { command.Parameters.AddWithValue ("@ Expirydate", DateTime.Parse (expiry)); } else { command.Parameters.AddWithValue ("@ Expirydate", Convert.DBNull); } ' –

1

Вы можете преобразовать DateTime и comapre со строкой путем анализа следующим образом

(DateTime.Parse(date).ToString()=="None" || DateTime.Parse(date).ToString()==String.Empty())?true:False 

Или вы можете использовать попробуйте блок catch, чтобы проверить его.

+0

Gosh Это тоже не работает. Я попробовал 'DateTime.Parse (row.Cell (4) .GetValue ()). ToString() == "None" || DateTime.Parse (row.Cell (4) .GetValue ()). ToString() == String.Empty()) ' –

Смежные вопросы