Why DateTime.AddHours doesn't seem to work?

Dates are immutable objects, i.e. they cannot be modified after creation. DateTime.AddHours returns a new DateTime instance which is shifted backwards by 4 hours but "date" will not be modified.

Use:

DateTime newDate = date.AddHours(-4);

AddHours returns a new DateTime object which is the result of adding the hours onto the original. The original is left unchanged.

Thus you want date = date.AddHours(-4); instead of just date.AddHours(-4);