aboutsummaryrefslogtreecommitdiffstats
path: root/activesupport/lib/active_support/core_ext/numeric/conversions.rb
blob: a16a8e7c09ef140d8fabe195f25b861f412f3523 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
class Numeric
  UTC_OFFSET_WITH_COLON = '%+03d:%02d'
  UTC_OFFSET_WITHOUT_COLON = UTC_OFFSET_WITH_COLON.sub(':', '')

  # Assumes self represents an offset from UTC in seconds (as returned from Time#utc_offset)
  # and turns this into an +HH:MM formatted string. Example:
  #
  #   -21_600.to_utc_offset_s   # => "-06:00"
  def to_utc_offset_s(colon = true)
    format = colon ? UTC_OFFSET_WITH_COLON : UTC_OFFSET_WITHOUT_COLON
    hours = self / 3600
    minutes = (abs % 3600) / 60
    format % [hours, minutes]
  end
end