Ruby: работа с датой и временем

TIME

Класс 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

Сегодня

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

Leave a Reply