Мое время и дата хранятся в базе данных в 24-часовом формате. Что я делаю, это использование хранимой процедуры для извлечения требуемой даты и времени и вставки в datatable. Но в datatable он автоматически преобразуется в 12-часовой формат. После извлечения данных из datatable можно преобразовать его в 24-часовой шаблон, но он должен быть преобразован в строку. Но проблема в том, что мне нужно использовать данные для создания диаграммы который будет принимать только формат DateTime. Так что я хочу, это способ конвертировать 12-часовое время в 24-часовой формат времени, не меняя его на строку. Пожалуйста, помогите.хочу время в формате 24 часа в DateTime в C#
ответ
Мое время и дата хранятся в базе данных в 24-часовом формате.
Я надеюсь, что они на самом деле не хранятся в любой текстовый формат, но вместо этого в DateTime
поле или что-то подобное. Не путайте «что я вижу при запуске SQL-запроса» с «тем, что хранится в базе данных». Так же, как цифры не сохраняются в виде последовательностей десятичных цифр, даты и время не должны храниться как текст.
Но в данных он автоматически преобразуется в 12-часовой формат.
Нет, если вы сделали все правильно должно быть хранить все в DataTable
как DateTime
. В отладчике вы можете увидеть 12-часовое представление строки, но сам объект должен быть DateTime
.
В основном проблема с 12/24 часами - это только симптом настоящей проблемы: ненужные преобразования строк. Отметьте тех вниз (и удалите их), а остальные должны позаботиться о себе. Поэтому, если вы сейчас вызываете ToString()
, когда вы извлекаете значение из DataTable
, прекратите это делать. Вместо этого, только литой:
DateTime dateTime = (DateTime) row["foo"];
Хорошо сказал, Джон. – Brian
спасибо за ответ ... bt есть способ конвертировать datetime в 12-часовой формат в 24-часовой формат без преобразования его в строку (без изменения его типа). –
@ user1919448 Объекты DateTime не сохраняются с учетом конкретного формата. Вы можете получить 24-часовой формат из любого объекта DateTime, например: 'string formatted24HourTime = myDateTime.ToString (" HH: mm ");' – tnw
Все, что @Jon сказал, это правильно.
Но если вы только что объяснили себя неправильно, и у вас есть DateTime
объект в вашей БД, и вы хотите отформатировать его в 24 ч только при отображении - вы можете использовать «НН» в строчном формате за 24 часа формат.
Например, для myDateTime
представляющих 16:00:
var hourPart = String.Format("{0:HH}", myDateTime)
Console.WriteLine(hourPart); // prints 16, and not 4PM.
@ Ник, спасибо за редактирование. – evgenyl
Из вашего рассказа, я понимаю, что на самом деле DataTable
содержит значение DateTime
, которое не имеет никакого формата сам по себе, это в основном просто хранит несколько тиков с произвольной даты и времени. То, что вы видите в визуализации вашей таблицы, - это преобразование по умолчанию ToString()
, основанное на настройках культуры вашего приложения.
Скорее всего, если вы должны были сделать что-то вроде этого перед запуском существующего кода, формат изменится:
var cultureInfo = new CultureInfo(CultureInfo.CurrentCulture.Name);
cultureInfo.DateTimeFormat.LongTimePattern = "HH:mm:ss";
Thread.CurrentThread.CurrentCulture = cultureInfo;
Я рекомендовал бы преобразовать в формат ваших предпочтений по телефону ToString
Явно однако.Как именно вы это сделаете, это зависит от того, как вы визуализируете данные из DataTable
.
Почему вы считаете, что преобразование в строку необходимо вообще? Из вопроса: «Но проблема в том, что мне нужно использовать данные для создания диаграммы, которая будет принимать только формат DateTime». –
@JonSkeet Я не совсем уверен, в чем проблема, но поскольку OP жаловался на неправильный формат, он должен каким-то образом отобразить его, я предположил. – Thorarin
Я подозреваю, что OP преобразуется в строку при получении значения из DataTable, но без какой-либо реальной необходимости делать это. –
- 1. C# синтаксического анализа 12 часов время в DateTime 24 часа
- 2. изменить формат времени в формате 24 часа
- 3. Сравнить DateTime со временем строки в формате 24 часа
- 4. Сравнение времени в формате 24 часа в C#
- 5. Jqgrid Date Column В формате 24 часа
- 6. Время печати в формате 24 часа в unix
- 7. Извлечь текущее время в формате 24 часа в JMeter
- 8. Час от DateTime? в 24-часовом формате
- 9. Таймер каждые 24 часа в определенное время
- 10. iOS время в 24 часа формат
- 11. Расчет времени ожидания, если только время в формате 24 часа?
- 12. конвертировать AMPM в datetime 24 часа
- 13. Максимальное количество цифр в формате 24 часа.
- 14. Время в 24-часовом формате в VBScript
- 15. Добавить двоеточие в 24 часа в C#?
- 16. конвертировать строку в формат 24 часа в формате mysql
- 17. Вывод минут из времени (в формате 24 часа)?
- 18. Как получить текущие часы в формате 24 часа в Android?
- 19. Преобразование минут в формат 24 часа в формате андроидного приложения
- 20. Пройдите 24 часа в сутки?
- 21. Как я могу получить дату в формате 24 часа
- 22. VB.NET конвертировать 24 часа mySQL ВРЕМЯ() в формат 12hours
- 23. Преобразование 12-часовое символьное время в 24 часа
- 24. Datetime в 24 часа Формат часов в asp.net
- 25. Двойного типа данных представления 24 часа время на 24-часовом формате время
- 26. Как объединить данные времени в формате 24 часа в R?
- 27. asp.net/C#: Преобразовать в 24 часа в Linq запрос
- 28. Как изменить формат времени на 24 часа? в C#
- 29. Выберите * в таблицу, где datetime is 24 часа назад
- 30. Как фильтровать значения datetime за последние 24 часа в HQL?
'DateTime' struct не имеет формата вообще. Это просто информация о дате и времени. – MarcinJuraszek
http://stackoverflow.com/questions/14518519/why-am-i-getting-this-indexerror-string-index-out-of-range-in-one-case-but-no – eeshwr