En PHP tienes las funciones como mktime() o gmktime() para generar fechas de "calendario" con lo cual no tienes que preocuparte de ese tipo de cálculos, tu simplemente usas esas funciones y creas tu fecha + la diferencia horaria en el parámetro de "hora" que tienen dichas funciones.
www.php.net/mktime www.php.net/gmktime
y afines (usa php.net)
Un saludo,