Как добавить час к интервалу времени. С#

У меня есть TimeSpan по определенной причине, поэтому он должен быть в этом формате. Я пытаюсь добавить час к текущему времени. Вот что я получил, что не работает:

TimeSpan time1= TimeSpan.FromHours(1); // my attempt to add 2 hours
TimeSpan ts = DateTime.Now.TimeOfDay;
ts.Add(time1);
MessageBox.Show(ts.ToString()); // for showing me its result

Не могли бы вы посоветовать?

Ответ 1

Метод Add of TimeSpan не изменяет значение ts. Он суммирует значения и возвращает новый объект.

Поэтому вместо этого вы должны сделать:

 TimeSpan ts = DateTime.Now.TimeOfDay;
 var ts2 = ts.Add(time1);
 MessageBox.Show(ts2.ToString());

Ответ 2

Причина, по которой ваш код не работает, заключается в том, что TimeSpan является неизменным. Метод TimeSpan.Add возвращает новый объект:

ts = ts.Add(time1);

Ответ 3

var newDateTime = DateTime.Now.AddHours(1);

Не нужно создавать TimeSpan. Это перевернется на завтра.

Ответ 4

Попробуйте использовать: -

TimeSpan time1 = TimeSpan.FromHours(1); // my attempt to add 2 hours
TimeSpan ts = DateTime.Now.TimeOfDay;
var newts = ts.Add(time1);
MessageBox.Show(newts.ToString());

Попробуйте следующее: -

var newDateTime = DateTime.Now.AddHours(1);

Ответ 5

Используйте AddHours();

DateTime.Now.AddHours(1);

или, чтобы использовать ваш код (см. переменную newTs).

TimeSpan time1 = TimeSpan.FromHours(1); // my attempt to add 2 hours
TimeSpan ts = DateTime.Now.TimeOfDay;
var newTs = ts.Add(time1);
MessageBox.Show(newTs.ToString());

Кроме того, в вашем комментарии говорится: "Моя попытка добавить 2 часа", это опечатка?

Ответ 6

ts += TimeSpan.FromHours(1);

и там у вас есть!

Ответ 7

var newTime = oldTime.Add(new TimeSpan(1, 0, 0));

Не попадайте в общую ошибку, не присваивая значение чему-либо (т.е. newTime), поскольку oldTime останется неизменным - TimeSpan.Add(...) возвращает TimeSpan.

То же самое относится к String.Replace(...) - легко, но разрушительно, чтобы пропустить.

Ответ 8

Мои 2 цента: заголовок вопроса говорит - Как добавить час к интервалу времени. С#, только один ответ является точным. Здесь я беру на себя добавление часов в промежуток времени:

public static TimeSpan AddHours(TimeSpan timeSpan, int hoursToAdd)
{
   TimeSpan newSpan = new TimeSpan(0, hoursToAdd, 0, 0);
   return timeSpan.Add(newSpan);
}

Здесь сценарий для демонстрации: https://dotnetfiddle.net/iuh66s