A helpful collection of resources about working with timezones for developers.

Watch

Read

Programming time, dates, timezones, recurring events, leap seconds... everything is pretty terrible.

PHP Conversion Snippet

Carbon is a time and date package for PHP. I use this snippet with Carbon to convert a user provided date to UTC.

function date2utc($timestamp, $format = 'Y-m-d H:i:s', $zone = 'America/New_York') {
    $class = \Carbon\Carbon::class;
    $timestamp = $timestamp instanceof $class ? $timestamp->format($format) : $timestamp;
    $date = \Carbon\Carbon::createFromFormat($format, $timestamp, $zone);
    $date->setTimezone('UTC');
    return $date;
}

PHP Timezone Bootstrap

When I'm not using a framework that sets the time zone and character encoding formats, I set them myself.

date_default_timezone_set('UTC');
mb_internal_encoding('UTF-8');