Я новичок в C#. У меня есть DataGridView, который отображает:
string Column4 = DateTime.Today.AddDays(1).AddHours(7).ToString();
Как мне потом получить только значение времени (например, 07:00:00) в виде строки?
Обновлено: дата должна быть в текущем формате и оставаться такой в DataGridView, но, например, когда я это делаю:
string newString = Column4;
Console.WriteLine(newString);
Как мне просто извлечь значение времени из столбца 4, а не всей даты?
РЕДАКТИРОВАТЬ2: Увидел возможный повторяющийся вопрос и попробовал:
DateTime newString = DateTime.Parse(Column4);
newString.ToString("HH:mm");
Console.WriteLine(newString);
Но это все же произвело:
05.02.2018 07:00:00
Где вы получаете данные? Не могли бы вы поделиться своим кодом?
Когда вы говорите «позже», вы имеете в виду значение, когда оно было впервые отображено или когда вы его получили? Также вам не нужен AddDays(0)
..
Возможный дубликат Как получить только время из даты и времени с #
проблема в том, что если вы добавите время, скажем, 3 часа ночи, время сейчас 10 утра, как вы ожидаете, что он узнает, что вы добавили 7 часов в какой-то момент?
Извините, я не понял, я обновлю вопрос.
@stuartd AddDays (0) должно было быть AddDays (1). Отредактировал это.
@mjwills Спасибо за ссылку! Я думал, что это именно то, что мне нужно, но по какой-то причине он все еще показывает полную дату и время. Я редактировал то, что пытался.
Что выводит Console.WriteLine(newString.ToString("HH:mm"));
? Как вы думаете, почему это так?
Если вам нужна только временная стоимость, вы можете использовать структуру TimeSpan
. Эта структура представляет собой временной интервал, который вы можете настраивать по своему усмотрению. Вы можете использовать конструктор структуры и его метод ToString()
для хранения строкового представления того времени.
Это код, который вы можете использовать:
string Column4 = (new TimeSpan(7, 0, 0)).ToString();
Если вам понадобится позже использовать то же значение TimeSpan
, я предлагаю вам сохранить его в переменной:
TimeSpan time = new TimeSpan(7, 0, 0);
string Column4 = time.ToString();
Помните, что если вы хотите сделать ссылку на дату, вы можете использовать структуру DateTime
. В противном случае, если вам нужно только время, вы можете использовать структуру TimeSpan
.
Чтобы преобразовать структуру TimeSpan
в структуру Datetime
, вы можете сделать это:
DateTime date = DateTime.Today + new TimeSpan(7, 0, 0)).ToString();
Обновлять: Если вам просто нужно время из структурной переменной DateTime
, вы можете отформатировать ее:
string newString = DateTime.Parse(Column4).ToString("t");
// Result: 7:00
Или же
string newString = DateTime.Parse(Column4).ToString("T");
// Result: 7:00:00
Вы можете увидеть больше строковых форматов на эта страница Microsoft MSDN.
In this Microsoft MSDN page is an example about how to instantiate a TimeSpan structure with desired time:
By calling one of its explicit constructors. The following example initializes a TimeSpan value to a specified number of hours, minutes, and seconds:
TimeSpan interval = newTimeSpan(2, 14, 18); Console.WriteLine(interval.ToString()); // Displays "02:14:18".
Извините, мне действительно нужно, чтобы значение даты отображалось в моем DataGridView.
ОК! Я обновил свой ответ, чтобы решить ваш вопрос!
Вам не нужно ничего "извлекать", вы устанавливаете формат отображения. (например,
HH:mm:ss
)