Если вы используете C # (или VB.NET, или ASP.NET), вы можете использовать
DateTime dt = DateTime.Now.AddHours(1);
Вы можете использовать отрицательные числа для вычитания:
DateTime dt = DateTime.Now.AddHours(-1);
РЕДАКТИРОВАНИЕ:
Я извлекаю asnwer из этого поста
Они предлагают преобразовать SYSTEMTIME в FILETIME, что является числом
клещи с эпохи. Затем вы можете добавить необходимое количество «тиков»
(т. е. интервалы в 100 нс), чтобы указать свое время и преобразовать обратно в
SYSTEMTIME.
Структура ULARGE_INTEGER представляет собой объединение с членом QuadPart, который
64-битное число, которое можно напрямую добавить (на новейшем оборудовании).
SYSTEMTIME add( SYSTEMTIME s, double seconds ) {
FILETIME f;
SystemTimeToFileTime( &s, &f );
ULARGE_INTEGER u ;
memcpy( &u , &f , sizeof( u ) );
const double c_dSecondsPer100nsInterval = 100. * 1.E-9;
u.QuadPart += seconds / c_dSecondsPer100nsInterval;
memcpy( &f, &u, sizeof( f ) );
FileTimeToSystemTime( &f, &s );
return s;
}
Если вы хотите добавить час, используйте SYSTEMTIME s2 = add(s1, 60*60)