While debugging a plugin I was writing, I noticed that on line 36 of wp-settings.php, the default timezone is hardcoded to UTC with a call to the date_default_set_timezone() function. This means any call to the PHP date/time functions will work with UTC as the local time.
Can someone please explain to me why this is a sane design choice by the WordPress team? I understand if they want to store and manipulate times internally as UTC, but wouldn’t a better alternative be to explicitly switch to a “UTC mode” when they need to do such logic?
Assuming you know to set your server’s php.ini’s timezone setting, this hardcoded UTC basically invalidates php.net’s description of the date() function:
date â Format a local time/date
Which strikes me as a bad thing, no?
Somehow I missed the current_time function, which gives a good description of the situation and how to properly deal with the need to get the current blog-local time.
http://codex.wordpress.org/Function_Reference/current_time
Though the purist in me still hates how WP makes the time zone setting in php.ini obsolete without giving you a choice. *grumble grumble*
WordPress is not a simplistic script, it is a extensive web app. It includes own time zone settings and own functions for output of localized date/time info.
I suppose it is much more straightforward to set baseline time zone and operate on top of that, than trying to change it back and forth around all related functionality.