date_default_timezone_get() returns the wrong timezone
I figured out what was going on. I am using the module print with the external   library mPDF (version 6.0). mPDF.php was changing my default timezone to "Europe/London" in line 80 (this bug has been reported in this version of mPDF). Apparently this line was running after drupal_session_initialize() in session.inc, which sets the default timezone for the session to match the site's selected timezone. 

What's strange is that mPDF was only affecting 2 of my sites. Apparently the session initialization in the other sites was running after the mPDF command? I commented out those lines and all the timezones now match.