class ReeDatetime::Advance

def call(date_time, **opts)

def call(date_time, **opts)
  changed_date = advance(
    date_time.to_date,
    **slice(opts, [:years, :months, :quarters, :weeks, :days])
  )
  datetime_advanced_by_date = change(
    date_time,
    year: changed_date.year,
    month: changed_date.month,
    day: changed_date.day
  )
  seconds_to_advance = (opts[:seconds] || 0) + (opts[:minutes] ||0) * 60 + (opts[:hours] || 0) * 3600
  if seconds_to_advance.zero?
    datetime_advanced_by_date
  else
    datetime_advanced_by_date = seconds_since(
      datetime_advanced_by_date, seconds_to_advance
    )
  end
end