Получение DateTime оценивает от DataRow (C#)

я попробовал бы:

var dataString = "email="+username+"&password="+password+"&remember="+remember;
18
задан John Saunders 9 July 2009 в 21:54
поделиться

8 ответов

Это всего лишь предположение, но если соответствующий тип в базе данных - DateTime, можете ли вы проверить, допускает ли столбец значение NULL?

Если да, то вы можете проверить r ["column"] == DBNull.Value , а затем передать его в DateTime, допускающий значение NULL? Поле.

Или еще проще:

row.Field<DateTime?>("column")

Если это не так, то да, Convert.ToDateTime () или что-то еще должно это сделать.

РЕДАКТИРОВАТЬ:

Я вижу ваш последний код там, но есть ли шанс, что вы захотите это сделать:

DateTime? firstIssueDate = r.Field<DateTime?>("fiss"); 
DateTime? endIssueDate = r.Field<DateTime?>("eiss"); 

if (firstIssueDate.HasValue && endIssueDate.HasValue) 
{ 
    firstIssueDate.Value // blah blah 
    endIssueDate.Value // blah blah 
}
42
ответ дан 30 November 2019 в 05:59
поделиться
foreach (DataRow r in ds.Tables[0].Rows)
{
    string prodCode = r["PRD-CDE"].ToString();
    string statCode = r["STAT"].ToString();
    DateTime firstIssueDate = DateTime.Parse((r["FISS"]).ToString()); 
    DateTime endIssueDate = DateTime.Parse((r["EISS"]).ToString());
    if(endIssueDate > DateTime.Now)
    { /*do some thing...*/}
    else {/*user invalid...*/}
}

This should compile and may work for you. Though it is certainly not performing any error checking that you should do for production code. Also look into DateTime.TryParse and you may to look into adding a IFormatProvider to ensure the format is parsed as expected.

2
ответ дан 30 November 2019 в 05:59
поделиться

Если вы хотите использовать значение по умолчанию (например, DateTime.MinValue), а не null (DateTime?) Или DBNull, вы можете сделать это:

var firstIssueDate = r["FISS"] as DateTime? ?? DateTime.MinValue;
var endIssueDate = r["EISS"] as DateTime? ?? DateTime.MinValue;
5
ответ дан 30 November 2019 в 05:59
поделиться

I would recommend using DateTime.Parse() if the row is returning a string for that index.

 string prodCode = r["PRD-CDE"].ToString(),statCode = r["STAT"].ToString();
 DateTime firstIssueDate = DateTime.Parse(r["FISS"].ToString());
 DateTime endIssueDate = DateTime.Parse(r["EISS"].ToString());

You could also use TryParse depending on your needs.

12
ответ дан 30 November 2019 в 05:59
поделиться

First of all, do r["FISS"].GetType() and print it to console (or pause and look at it in the debugger). If it says it's a String, then most of the above advices will help. If it says something else, please come back and update your question.

1
ответ дан 30 November 2019 в 05:59
поделиться

В качестве дополнительного ответа вы также можете использовать статическую функцию Convert.ToDateTime

0
ответ дан 30 November 2019 в 05:59
поделиться

If you have a DateTime string with a special format (not any standard .NET DateTime format) that needs to be converted to .NET DateTime type, you can use DateTime.ParseExact() method.

Please see the MSDN document for more details including examples.

If you have multiple formats to parse, try DateTime.ParseExact Method (String, String[], IFormatProvider, DateTimeStyles)

0
ответ дан 30 November 2019 в 05:59
поделиться

DateTime.Parse (r ["FISS"]. ToString ()) - это способ пойти, но он выдает ошибку «Строка не была распознана как допустимый DateTime». Не могли бы вы показать фактическую строку в столбце r ["FISS"], возможно, это проблема интернационализации ....

0
ответ дан 30 November 2019 в 05:59
поделиться
Другие вопросы по тегам:

Похожие вопросы: