Формат даты и времени, например, ЧЧ: мм 24 часа без AM / PM

Я искал здесь о преобразовании строки типа «16:20» в тип DateTime без потери формата, я сказал, что не хочу добавлять дд / мм / ггг или секунды или AM / PM, потому что дБ просто принимает этот формат.

Я попробовал с культурами еще

Заранее спасибо

11.12.2008 21:19:51
7 ОТВЕТОВ
РЕШЕНИЕ

Все объекты DateTime должны иметь дату и время.

Если вы хотите только время, используйте TimeSpan:

TimeSpan span = TimeSpan.Parse("16:20");

Если вы хотите DateTime, добавьте это время к значению min:

TimeSpan span = TimeSpan.Parse("16.20");
DateTime dt = DateTime.MinValue.Add(span);
// will get you 1/1/1900 4:20 PM which can be formatted with .ToString("HH:mm") for 24 hour formatting
13
11.12.2008 21:45:23
Я попробую это, потому что я вижу, что другой разработчик, который работает с C ++, хранил данные, как вы указываете.
Jonathan Escobedo 11.12.2008 21:48:42
Возможно ли удалить AM / PM в последнем формате? и делает это 24 часа, заранее спасибо
Jonathan Escobedo 11.12.2008 21:55:32
Объекты DateTime не хранят даты в определенном формате. Вы можете отображать их так, как вам нравится. dt.ToString («ЧЧ: мм») даст вам 24-часовое представление
John Sheehan 11.12.2008 22:03:07
Второй пример объекта TimeSpan не на 100%, должен иметь «:» вместо «.» - TimeSpan span = TimeSpan.Parse ("16:20");
David Smit 9.12.2013 09:52:27

DateTime.Now.ToString ("чч: мм") - если это C #.

Ой. Только читайте шапку.

DateTime dt = new DateTime(2008, 12, 11, Convert.ToInt32("16"), Convert.ToInt32("32"), 0);
3
30.12.2013 12:21:04
заглавная буква 24 часа
John Sheehan 11.12.2008 21:26:54
но это преобразовать значение в строку правильно? я хочу установить его тип datetime, потому что я работаю с классом, который содержит атрибут для этого значения
Jonathan Escobedo 11.12.2008 21:27:03
Я получаю значение из gridview следующим образом: string hour = ((Label) selectedRow.Cells [0] .FindControl ("lblHorario")). Text;
Jonathan Escobedo 11.12.2008 21:31:54
или DateTime hour = Convert.ToDateTime (((Label) selectedRow.Cells [0] .FindControl ("lblHorario")). Text);
Jonathan Escobedo 11.12.2008 21:32:25

Я хочу ответить на эту часть вашего вопроса:

без потери формата

База данных обычно хранит все значения даты и времени в стандартном общем формате, который даже не читается человеком. Если вы используете столбец datetime, исходный формат будет уничтожен.

Однако, когда вы извлекаете значение, вы возвращаете его в любой формат, который хотите. Если хочешь HH:mm, можешь получить.

0
11.12.2008 21:24:11
Я исправил вопрос так, что часть комментария Джоэла «без рыхлости» теперь имеет меньше смысла.
Jonathan Leffler 11.12.2008 21:25:47

что вы подразумеваете под "потерять формат".

если вы преобразуете его в тип DateTime, тогда объект DateTime будет иметь dd / mm / yy и другие свойства. в зависимости от того, как вы планируете использовать объект, вы можете «восстановить» исходные настройки, отформатировав строку вывода следующим образом: DT.ToString ("HH: mm");

1
11.12.2008 21:26:57

Поскольку вы не указываете, какую СУБД вы используете, трудно понять, какой ответ вам поможет. Если вы используете IBM Informix Dynamic Server, вы просто используете тип данных «DATETIME HOUR TO MINUTE», который будет записывать значения в 24-часовые часы.

1
11.12.2008 21:27:21
но на стороне кода я использую linqtosql, поэтому я должен передать все необходимые данные в качестве типов БД.
Jonathan Escobedo 11.12.2008 21:45:13
DateTime.Parse("16:20")
1
11.12.2008 21:29:33
я получаю это с вашим фрагментом кода: 12.11.2008 04:20:00
Jonathan Escobedo 11.12.2008 21:33:51
Я все еще получаю FormatException необработанным кодом пользователя, кстати, теперь я установил DateTime для обеих сторон, на стороне сервера и на стороне клиента, так почему же все-таки выбрасывается это исключение?
Jonathan Escobedo 11.12.2008 21:46:00

Просто укажите формат даты для вашего dateTime.

string DateFormat = "yyyy MM d "это даст вам месяц месяц и день . после продолжения; string DateFormat = "yyyy MM d HH:mm:ss " здесь заглавная буква H даст вам 24 hours time formatи нижний "h" will give you the 12 hours timeформат ...

когда вы задаете формат даты в виде строки, вы можете делать все, что захотите, с датой и временем.

string DateFormat = "yyyyMMdHHmmss";
string date = DateTime.Now.ToStrign(DateFormat);

ИЛИ

Console.writeline(DateTime.Now.ToStrign(DateFormat));

ВЫВОД:

20120823132544
20
4.04.2016 11:59:24
+1 за "HH даст вам 24-часовой формат" никогда не знал этого, спасибо!
Denys Wessels 12.09.2012 09:04:44