Как добавить час к интервалу времени. С#
У меня есть 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