#c# #datetime #time
#c# #datetime #время
Вопрос:
Это сбивает с толку, все, что я хочу, это время из DateTime?
вот мой код:
clsdbo_RR.DateRecd = reader["DateRecd"] is DBNull ? null : (DateTime?)reader["DateRecd"];
clsdbo_RR.TimeRecd = reader["TimeRecd"] is DBNull ? null : reader["TimeRecd"].ToString("hh:mm:ss");
Моя дата отображается как дата правильно, но время не отображается?
private Nullable<DateTime> m_TimeRecd;
public Nullable<DateTime> DateRecd
{
get
{
return m_DateRecd;
}
set
{
m_DateRecd = value;
}
}
Комментарии:
1. В вашем вопросе не хватает информации. Что такое
reader["TimeRecd"]
значение и тип? И оclsdbo_RR.TimeRecd
? Где это не отображается?2. Каков тип данных
reader["TimeRecd"]
?3. Возможно, время не было введено в базу данных.
4. @Magnetron reader — это SqlDataReader, и он находится в общедоступном статическом классе
5. @Magnetron private Обнуляемый<DateTime> m_TimeRecd;
Ответ №1:
Я сильно подозреваю, что ваш reader["TimeRecd"]
возвращает object
, вот почему вам нужно сначала привести его к DateTime
(или DateTime?
как вы это сделали), прежде чем вызывать ToString
метод. Без приведения, это, вероятно, вызывает object.ToString
метод, не DateTime.ToString
.
Если у вас clsdbo_RR.TimeRecd
есть string
, вам просто нужно использовать (DateTime?)reader["TimeRecd"].ToString("hh:mm:ss")
вместо этого, например;
clsdbo_RR.TimeRecd = reader["TimeRecd"] is DBNull ?
null : (DateTime?)reader["TimeRecd"].ToString("hh:mm:ss");
Комментарии:
1. Время не было указано в вызове хранимой процедуры. Примечание для себя: всегда устанавливайте точку останова в Reader, чтобы сначала проверить, действительно ли там данные, перед отправкой. Извините, ребята.
2. Я также должен добавить, что тип SQL Time (7) — это интервал времени в C #, а не DateTime.