This will automatically get you a list of American timezones:
if (defined('DateTimeZone::AMERICA')) {
// PHP 5.3+
$timezoneIdentifiers = timezone_identifiers_list(DateTimeZone::AMERICA);
} else {
// PHP 5.2
$timezoneIdentifiers = timezone_identifiers_list();
$timezoneIdentifiers = array_filter($timezoneIdentifiers, create_function('$tz', 'return preg_match("/^America\//", $tz);'));
}
Note that this will include South American, Canadian etc timezones as well though. You could play around with DateTimeZone::PER_COUNTRY
as a filter to timezone_identifiers_list
for PHP 5.3 and see if that gets you want you want, or filter the complete list for US/
. The best choice is probably to handpick the timezones though.