Adding this line to the top of my template fixes the problem (or so it seems anyway):
<?php echo (int)date_default_timezone_set('America/New_York'); ?>
However I have to remember to keep this code in synch with my settings, and certainly cannot distribute a template with this line in it…