Я прочитал строку, используя этот формат, с помощью программы чтения данных. Как я могу прочитать дату, используя аналогичный формат?
while (MyReader.Read())
{
TextBox1.Text = (string)MyReader["Note"];
}
Я прочитал строку, используя этот формат, с помощью программы чтения данных. Как я могу прочитать дату, используя аналогичный формат?
while (MyReader.Read())
{
TextBox1.Text = (string)MyReader["Note"];
}
Попробуйте, как указано ниже:
while (MyReader.Read())
{
TextBox1.Text = Convert.ToDateTime(MyReader["DateField"]).ToString("dd/MM/yyyy");
}
в методе ToString()
вы можете изменить формат данных в соответствии с вашими требованиями.
Если столбец запроса имеет соответствующий тип, то
var dateString = MyReader.GetDateTime(MyReader.GetOrdinal("column")).ToString(myDateFormat)
Если столбец запроса на самом деле является строкой, см. другие ответы.
GetOrdinal
.
- person Richard; 23.02.2014
Это может показаться немного не по теме, но это был пост, на который я наткнулся, когда задавался вопросом, что происходит, когда вы читаете столбец как dateTime в С#. Пост отражает информацию, которую я хотел бы найти об этом механизме. Если вы беспокоитесь о UTC и часовых поясах, читайте дальше
Я провел немного больше исследований, так как я всегда очень настороженно отношусь к DateTime как к классу из-за его автоматических предположений о том, какой часовой пояс вы используете, и потому, что слишком легко спутать местное время и время по Гринвичу.
Чего я пытаюсь избежать, так это того, что DateTime переходит 'о, смотрите, компьютер, на котором я работаю, находится в часовом поясе x, поэтому это время также должно быть в часовом поясе x, когда меня спросят о моих значениях, я отвечать так, как будто я нахожусь в этом часовом поясе '
Я пытался прочитать столбец datetime2
.
Время, когда вы вернетесь с сервера sql, в конечном итоге будет равно Kind.Unspecified
, это, по-видимому, означает, что оно обрабатывается как UTC, чего я и хотел.
При чтении столбца date
вы также должны читать его как DateTime
, даже несмотря на то, что в нем нет времени и он еще более подвержен ошибкам из-за часовых поясов (как в полночь).
Я бы определенно посчитал это более безопасным способом чтения DateTime, поскольку я подозреваю, что он, вероятно, может быть изменен либо настройками на сервере sql, либо статическими настройками в вашем С#:
var time = reader.GetDateTime(1);
var utcTime = new DateTime(time.Ticks, DateTimeKind.Utc);
Оттуда вы можете получить компоненты (день, месяц, год) и т. д. и отформатировать их по своему усмотрению.
Если то, что у вас есть, на самом деле является датой + временем, то Utc может быть не тем, что вам нужно, - поскольку вы возитесь с клиентом, вам может потребоваться сначала преобразовать его в местное время (в зависимости от того, что означает время ). Однако это открывает целую банку червей. Если вам нужно это сделать, я бы рекомендовал использовать библиотеку, например noda time. В стандартной библиотеке есть TimeZoneInfo
, но после краткого изучения в нем, похоже, нет правильного набора часовых поясов. а>. Вы можете увидеть список, предоставленный TimeZoneInfo
, используя метод TimeZoneInfo.GetSystemTimeZones();
Я также обнаружил, что студия управления сервером sql не преобразует время в местное время перед их отображением. Какое облегчение!
DateTime.SpecifyKind(reader.GetDateTime(1), DateTimeKind.Utc)
, чтобы вам не приходилось вручную жонглировать галочками :)
- person jocull; 17.01.2017
Я знаю, что это старый вопрос, но я удивлен, что ни в одном ответе не упоминается GetDateTime
:
Получает значение указанного столбца в виде объекта
DateTime
.
Который вы можете использовать как:
while (MyReader.Read())
{
TextBox1.Text = MyReader.GetDateTime(columnPosition).ToString("dd/MM/yyyy");
}
OP
ясно: I read a string using this format with a data reader. How can I read in a date using similar format?
OP
спрашивает, что у него / нее есть столбец в строковом формате, но он хочет преобразовать / отобразить его в формате даты. Примером этого может быть SQLite
db, где мы вводим дату в строковом формате. Ссылка: Типы данных SQLite.
- person nam; 29.05.2020
В моем случае я изменил поле даты и времени в базе данных SQL, чтобы не допускать null. Затем SqlDataReader позволил мне привести значение непосредственно к DateTime.
DateTime
. тем временем левое выражение принимает String
. Так что вам все равно нужно позвонить ToString()
.
- person abatishchev; 11.04.2011