[ create a new paste ] login | about

Link: http://codepad.org/YRUOEFKR    [ raw code | output | fork ]

mamantoha - Ruby, pasted on Nov 12:
$KCODE = "u"

# Перетворює число секунд у зручний формат -- [секунди, хвилини, години, дні]
#
def human_timer(total_sec)
  (day ,hour = (tmp, min = (tmp, sec = (total_sec.to_i).divmod(60))[0].divmod(60))[0].divmod(24))
  return sec, min, hour, day
end

# Вибирає відмінок в залежності від числа
#
def choose_plural(amount, *variants)
  variant = ( (amount % 10 == 1 && amount % 100 != 11) ? 1 : (amount % 10 >= 2 && amount % 10 <= 4 && (amount % 100 < 10 || amount % 100 >= 20) ) ? 2 : 3 )
  return variants[variant - 1]
end

# Формує стрічку скільки часу залишилось до Нового Року )))
#
def glue_string
  new_year_date = Time.mktime(Time.now.year + 1)
  total_sec = new_year_date - Time.now
  if total_sec > 0
    sec, min, hour, day = human_timer(total_sec)
    a_string ="До Нового Року залишилось"
    a_string << " #{day} #{choose_plural(day, 'день', 'дні', 'днів')}" if !day.zero?
    a_string << " #{hour} #{choose_plural(hour, 'година', 'години', 'годин')}" if !hour.zero?
    a_string << " #{min} #{choose_plural(min, 'хвилина', 'хвилини', 'хвилин')}" if !min.zero?
    a_string << " #{sec} #{choose_plural(sec, 'секунда', 'секунди', 'секунд')}" #if !sec.zero?
  else
    a_string = "З Новим Роком!"
  end
end

puts glue_string


Output:
1
До Нового Року залишилось 49 днів 16 годин 7 хвилин 58 секунд


Create a new paste based on this one


Comments: