How to change timezone format for user/site settings?
Yes, you're close. The problem with the above code is that it doesn't set the correct key values in #options; thus upon saving, the date_default_timezone variable will be set to some numeric key instead of an accepted PHP timezone string that is expected for the variable. 

Do something like this to set the correct key:

function token_form_system_regional_settings_alter(&amp;$form, &amp;$form_state, $form_id) {
  $options = array();
  foreach(timezone_identifiers_list() as $timezone) {
    //$options[$timezone] sets the value for date_default_timezone select
    //$timezone set the display for select
    $options[$timezone] = $timezone;
  }
  $form['timezone']['date_default_timezone']['#options'] = $options;
}