3.4. Iterowanie po datach

Problem

Chcemy przemieszczać się po określonych momentach czasowych, począwszy od wyróżnionego momentu startowego.

Rozwiązanie

Na bazie obiektów Time, DateTime i Date można tworzyć zakresy tak, jakby obiekty te były liczbami. W przypadku obiektów Time iteracja po zakresie odbywa się w odstępach sekundowych, w przypadku klas DateTime i Date — w odstępach dziennych.

require 'date' (Date.new(1776, 7, 2)..Date.new(1776, 7, 4)).each { |x| puts x } # 1776-07-02 # 1776-07-03 # 1776-07-04 span = DateTime.new(1776, 7, 2, 1, 30, 15)..DateTime.new(1776, 7, 4, 7, 0, 0) span.each { |x| puts x } # 1776-07-02T01:30:15Z # 1776-07-03T01:30:15Z # 1776-07-04T01:30:15Z (Time.at(100)..Time.at(102)).each { |x| puts x } # Thu Jan ...

Get Ruby. Receptury now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.