How to override system_time_zones in Drupal 7 How can I override the system_time_zones() function without hacking the Drupal 7 core?

I would like to modify how the dropdown list is presented, but cannot seem to get at it with hook_form_alter().

My end goal here is to reformat the timezone dropdown list to include only the location and offset by removing the date/time from the &lt;select&gt; lists &lt;options&gt; text.

For example,

'Pacific/Honolulu: Friday, June 1, 2012 - 6:43pm -1000' would change to
'Pacific/Honolulu: -1000'

This would be a simple edit to system_time_zones() in system.module, but hacking core is not an option for me.

If I were to hack core, this is what I would like to do.

Before Edits (for reference):

function system_time_zones($blank = NULL) {
  $zonelist = timezone_identifiers_list();
  $zones = $blank ? array('' =&gt; t('- None selected -')) : array();
  foreach ($zonelist as $zone) {
    // Because many time zones exist in PHP only for backward compatibility
    // reasons and should not be used, the list is filtered by a regular
    // expression.
    if (preg_match ('!^((Africa|America|Antarctica|Arctic|Asia|Atlantic|Australia|Europe|Indian|Pacific)/|UTC$)!', $zone)) {
      $zones[$zone] = t('@zone: @date', array('@zone' =&gt; t(str_replace ('_', ' ', $zone)), '@date' =&gt; format_date(REQUEST_TIME, 'custom', variable_get('date_format_long', 'l, F j, Y - H:i') . ' O', $zone)));
    }
  }
  // Sort the translated time zones alphabetically.
  asort ($zones);
  return $zones;
}


After Edits (Changes are to $zones[$zone] in @zone string): 

function system_time_zones($blank = NULL) {
  $zonelist = timezone_identifiers_list();
  $zones = $blank ? array('' =&gt; t('- None selected -')) : array();
  foreach ($zonelist as $zone) {
    // Because many time zones exist in PHP only for backward compatibility
    // reasons and should not be used, the list is filtered by a regular
    // expression.
    if (preg_match ('!^((Africa|America|Antarctica|Arctic|Asia|Atlantic|Australia|Europe|Indian|Pacific)/|UTC$)!', $zone)) {
      $zones[$zone] = t('@zone: @date', array('@zone' =&gt; t(str_replace ('_', ' ', $zone)), '@date' =&gt; format_date(REQUEST_TIME, 'custom', ' O', $zone)));
    }
  }
  // Sort the translated time zones alphabetically.
  asort ($zones);
  return $zones;
}


How can I accomplish this without messing with core?
I was able to access the timezone dropdown list by implementing hook_form_alter() with an #after_build function.  You can filter, clean and modify the array here.

function MYMODULE_form_user_profile_form_alter(&amp;$form, &amp;$form_state) {
   $form['#after_build'][] = 'MYMODULE_timezone_modify';
}

function MYMODULE_timezone_modify($form, &amp;$form_state) {
   $form['timezone']['timezone']['#options'] = array(/*Your New or Modified Array Here*/);
   return $form;
}