Rodrigo Alex Rodriguez Ответов: 2

Преобразовать значение типа TimeSpan для типа datetime


private void button1_Click(object sender, EventArgs e)
{
    TimeSpan a = new TimeSpan(12, 00, 00);
    TimeSpan b = new TimeSpan(13, 00, 00);

    TimeSpan r = b - a;
    TimeSpan rr = new TimeSpan(r.Ticks / 2);

    MessageBox.Show("Test\n " + rr);   ///this is type TimeSpan

    dateTimePicker.Value =Convert.ToDateTime(rr);   /// ERROR" Additional Information: An object of type 'System.TimeSpan' can not be converted to type 'System.IConvertible'. "
}


Что я уже пробовал:

dateTimePicker.Value =Convert.ToDateTime(rr);


и

c# - преобразование DateTime в TimeSpan - переполнение стека[^]


Попробуйте его на своем IDE

cvogt61457

Ну а временной промежуток-это разница в 2 раза. Это не само время.
Вам нужно в DataTime использовать в качестве эталонного времени с TimeSpan для создания времени.

Rodrigo Alex Rodriguez

У вас есть пример?

2 Ответов

Рейтинг:
2

OriginalGriff

Вы не можете преобразовать Timespan в DateTime: это не работает, потому что это не логическое действие. Подумайте об этом: если я попрошу вас встретиться со мной в "плюс 6 часов 30 минут", что это значит? Ничего - если только не понимать, что существует отправная точка, относительно которой оно должно быть. С точки зрения обычного разговора, "я встречусь с вами через тридцать минут" - это нормально-все стороны понимают, что это означает "через тридцать минут", но без этого понимания мы все пропустим встречу.

В вычислительных терминах вы можете очень легко включить текущее время:

TimeSpan a = new TimeSpan(12, 00, 00);
DateTime dt = DateTime.Now + a;
Но вы не можете ожидать, что TimeSpan преобразуется напрямую.


Рейтинг:
1

Jochen Arndt

Вы не можете преобразовать временной промежуток в дату-время.

Вы можете добавить интервал к определенной дате и времени (например, к текущему времени).

Если интервал всегда положительный и меньше 24 часов, вы можете использовать DateTimePicker только со временем (см. Как отобразить время с помощью элемента управления DateTimePicker | Microsoft Docs[^]), получая и устанавливая соответственно временные члены.

В противном случае вы можете использовать элемент управления UpDown, создать свой собственный или искать в интернете.

Примером может служить Выбор Времени[^].