Validates a non-required timezone string value using IsValidTimezone():
    - if invalid adds InvalidValue error (if problems accumulator is provided)
    - an empty timezone string is regarded as valid! Otherwise we might end up
      with many duplicate errors because of the required field checks.

def ValidateTimezone(timezone, column_name=None, problems=None):
  """
  Validates a non-required timezone string value using IsValidTimezone():
    - if invalid adds InvalidValue error (if problems accumulator is provided)
    - an empty timezone string is regarded as valid! Otherwise we might end up
      with many duplicate errors because of the required field checks.
  """
  if IsEmpty(timezone) or IsValidTimezone(timezone):
    return True
  else:
    if problems:
      # if we get here pytz has already been imported successfully in
      # IsValidTimezone(). So a try-except block is not needed here.
      import pytz
      problems.InvalidValue(
          column_name, timezone,
          '"%s" is not a common timezone name according to pytz version %s' %
          (timezone, pytz.VERSION))
    return False