TIME
Получить hours:minutes (h:m) из Time.now можно по разному
1) лучший и самый универсальный способ через strftime
h_m = Time.now.strftime("%H:%M") # можно выцепить все что угодно, не только h:m, формат %d/%m/%Y %H:%M
2) хуже
h_m = "#{Time.now.hour}:#{Time.now.min}"
3) плохой
time_and_date = "#{Time.now}".split(" ") h_m = "#{time_and_date[1]}".split(":") h_m = "#{query_time[0]}:#{query_time[1]}"
Парсим date_time из string
require 'time' dt_string = "20.03.2018 20:15:36" dt_object = Time.parse(dt_string)
Добавляем часы в date_time object
hours = 14 dt_result = dt_object + hours*60*60 puts dt_result
Находим SEC и MIN между двумя объектами времени (между now и dt_object)
sec = Time.now - dt_object min = Time.at(sec).min
Сравниваем время
a = Time.parse("10:00") b = Time.parse("09:00") puts a < b
DATE
Сегодня
Date.today
Сегодня – 1
Date.today - 1
Парсим дату
Date.parse("2018-10-01")
День недели на объект даты (частный случай today)
Date.today.friday? Date.today.saturday? Date.today.monday?
Номер дня в неделе (понедельник -1, воскресенье -7)
Date.cwday
Номер недели в году
Date.cweek
Скрипты
Простейший скрипт по генерации дат всех выходных (суббот и воскресений) на год без исключений переносов (нужно удаление/добавление дат в соответствии с произ. календарем).
require 'time' cur_date = Date.new(2018,1,1) counter = 0 while counter < 365 puts "#{cur_date}" if cur_date.saturday? == true || cur_date.sunday? == true cur_date+=1 counter+=1 end