in lib/twitter_cldr/timezones/iso8601_location.rb [68:110]
def format_offset(offset, is_basic, use_utc_indicator, is_short, ignore_seconds)
abs_offset = offset.abs
return UTC if use_utc_indicator && abs_offset == 0
min_fields_idx = is_short ? 0 : 1
max_fields_idx = ignore_seconds ? 1 : 2
sep = is_basic ? nil : ':'
fields = []
fields << abs_offset / 60 / 60
fields << (abs_offset / 60) % 60
fields << abs_offset % 60
last_idx = max_fields_idx
while last_idx > min_fields_idx
if fields[last_idx] != 0
break
end
last_idx -= 1
end
buf = ''
sign = '+'
if offset < 0
if 0.upto(last_idx).any? { |i| fields[i] != 0 }
sign = '-';
end
end
buf << sign
0.upto(last_idx) do |i|
buf << sep if sep && i != 0
buf << '0' if fields[i] < 10
buf << fields[i].to_s
end
buf
end