Все это можно сделать с помощью DateTime.Add(TimeSpan)
, поскольку оно поддерживает положительные и отрицательные временные области.
DateTime original = new DateTime(year, month, day, 8, 0, 0);
DateTime updated = original.Add(new TimeSpan(5,0,0));
DateTime original = new DateTime(year, month, day, 17, 0, 0);
DateTime updated = original.Add(new TimeSpan(-2,0,0));
DateTime original = new DateTime(year, month, day, 17, 30, 0);
DateTime updated = original.Add(new TimeSpan(0,45,0));
Или вы также можете использовать DateTime.Subtract(TimeSpan)
Метод аналогично.