module Strava::Models::Mixins::Time

Public Instance Methods

average_speed_meters_per_second() click to toggle source

always in meters per second, even in imperial splits

# File lib/strava/models/mixins/time.rb, line 14
def average_speed_meters_per_second
  elapsed_time
end
elapsed_time_in_hours_s() click to toggle source
# File lib/strava/models/mixins/time.rb, line 22
def elapsed_time_in_hours_s
  time_in_hours_s elapsed_time
end
kilometer_per_hour_s() click to toggle source
# File lib/strava/models/mixins/time.rb, line 42
def kilometer_per_hour_s
  return unless average_speed && average_speed.positive?

  format('%.1fkm/h', average_speed * 3.6)
end
miles_per_hour_s() click to toggle source
# File lib/strava/models/mixins/time.rb, line 48
def miles_per_hour_s
  return unless average_speed && average_speed.positive?

  format('%.1fmph', average_speed * 2.23694)
end
moving_time_in_hours_s() click to toggle source
# File lib/strava/models/mixins/time.rb, line 18
def moving_time_in_hours_s
  time_in_hours_s moving_time
end
pace_per_100_meters_s() click to toggle source
# File lib/strava/models/mixins/time.rb, line 34
def pace_per_100_meters_s
  convert_meters_per_second_to_pace average_speed, :"100m"
end
pace_per_100_yards_s() click to toggle source
# File lib/strava/models/mixins/time.rb, line 30
def pace_per_100_yards_s
  convert_meters_per_second_to_pace average_speed, :"100yd"
end
pace_per_kilometer_s() click to toggle source
# File lib/strava/models/mixins/time.rb, line 38
def pace_per_kilometer_s
  convert_meters_per_second_to_pace average_speed, :km
end
pace_per_mile_s() click to toggle source
# File lib/strava/models/mixins/time.rb, line 26
def pace_per_mile_s
  convert_meters_per_second_to_pace average_speed, :mi
end
speed_s() click to toggle source
# File lib/strava/models/mixins/time.rb, line 54
def speed_s
  kilometer_per_hour_s
end

Private Instance Methods

convert_meters_per_second_to_pace(speed, unit = :mi) click to toggle source

Convert speed (m/s) to pace (min/mile or min/km) in the format of 'x:xx' yizeng.me/2017/02/25/convert-speed-to-pace-programmatically-using-ruby

# File lib/strava/models/mixins/time.rb, line 75
def convert_meters_per_second_to_pace(speed, unit = :mi)
  return unless speed && speed.positive?

  total_seconds = case unit
                  when :mi then 1609.344 / speed
                  when :km then 1000 / speed
                  when :"100yd" then 91.44 / speed
                  when :"100m" then 100 / speed
                  end
  minutes, seconds = total_seconds.divmod(60)
  seconds = seconds.round
  if seconds == 60
    minutes += 1
    seconds = 0
  end
  seconds = seconds < 10 ? "0#{seconds}" : seconds.to_s
  "#{minutes}m#{seconds}s/#{unit}"
end
time_in_hours_s(time) click to toggle source
# File lib/strava/models/mixins/time.rb, line 60
def time_in_hours_s(time)
  return unless time

  hours = time / 3600 % 24
  minutes = time / 60 % 60
  seconds = time % 60
  [
    hours.to_i.positive? ? format('%dh', hours) : nil,
    minutes.to_i.positive? ? format('%dm', minutes) : nil,
    seconds.to_i.positive? ? format('%ds', seconds) : nil
  ].compact.join
end