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.