From: manga.osyo@... Date: 2019-03-11T03:38:00+00:00 Subject: [ruby-core:91739] [Ruby trunk Feature#15653] Proposal: Add Time#floor Issue #15653 has been reported by osyo (manga osyo). ---------------------------------------- Feature #15653: Proposal: Add Time#floor https://bugs.ruby-lang.org/issues/15653 * Author: osyo (manga osyo) * Status: Open * Priority: Normal * Assignee: * Target version: ---------------------------------------- ## ������ `Time` ��������������������������������������������������������������������������������������������������� ## ������ * ������������������ `Time#round` ��������������������������������������������������������� * ��������������������������������������������������������������������������������������������������������������� * ������������������������������3������������������������ DB ��������������������������������������������� * Ruby ��������������������������������������������������������������������������������������� ## ������ * ������������������������������������������ `Time#floor` ��������������������� ## `Time#floor` ��������� `Time#round` ��������������������������������������������� ```ruby require 'time' t = Time.utc(2010,3,30, 5,43,"25.123456789".to_r) t.iso8601(10) #=> "2010-03-30T05:43:25.1234567890Z" # ������������������������������������ t.floor(0).iso8601(10) #=> "2010-03-30T05:43:25.0000000000Z" t.floor(1).iso8601(10) #=> "2010-03-30T05:43:25.1000000000Z" t.floor(2).iso8601(10) #=> "2010-03-30T05:43:25.1200000000Z" t.floor(3).iso8601(10) #=> "2010-03-30T05:43:25.1230000000Z" t.floor(4).iso8601(10) #=> "2010-03-30T05:43:25.1234000000Z" t.floor(5).iso8601(10) #=> "2010-03-30T05:43:25.1234500000Z" t.floor(6).iso8601(10) #=> "2010-03-30T05:43:25.1234560000Z" t.floor(7).iso8601(10) #=> "2010-03-30T05:43:25.1234567000Z" t.floor(8).iso8601(10) #=> "2010-03-30T05:43:25.1234567800Z" t.floor(9).iso8601(10) #=> "2010-03-30T05:43:25.1234567890Z" t.floor(10).iso8601(10) #=> "2010-03-30T05:43:25.1234567890Z" # ������������������������ 0 t.floor.iso8601(10) #=> "2010-03-30T05:43:25.0000000000Z" t = Time.utc(1999,12,31, 23,59,59) (t + 0.4).floor.iso8601(3) #=> "1999-12-31T23:59:59.000Z" (t + 0.49).floor.iso8601(3) #=> "1999-12-31T23:59:59.000Z" (t + 0.5).floor.iso8601(3) #=> "1999-12-31T23:59:59.000Z" (t + 1.4).floor.iso8601(3) #=> "2000-01-01T00:00:00.000Z" (t + 1.49).floor.iso8601(3) #=> "2000-01-01T00:00:00.000Z" (t + 1.5).floor.iso8601(3) #=> "2000-01-01T00:00:00.000Z" t = Time.utc(1999,12,31, 23,59,59) (t + 0.123456789).floor(4).iso8601(6) #=> "1999-12-31T23:59:59.123400Z" ``` ## ��������� ������������������������������������������������������������ ```ruby t = Time.utc(1999,12,31, 23,59,59) # + 0.6 ��������� 1999-12-31T23:59:59.6000000000Z ��������� # ��������� floor(1) ������������ 1999-12-31T23:59:59.6000000000Z ������������������������ .5 ��������������������������� pp (t + 0.6).floor(1).iso8601(10) # => "1999-12-31T23:59:59.5000000000Z" # ��������� + 0.6 ��������������������������������������������������������� pp (t + 0.6).iso8601(10) # => "1999-12-31T23:59:59.5999999999Z" ``` ��������� `Time#round` ��������������������������������������������������� ```ruby t = Time.utc(1999,12,31, 23,59,59) # + 0.5 ��������������������������������� pp (t + 0.5).round.iso8601(10) # => "2000-01-01T00:00:00.0000000000Z" # + 0.6 - 0.1 ������������������������������������������������ pp (t + 0.6 - 0.1).round.iso8601(10) # => "1999-12-31T23:59:59.0000000000Z" # ��������������������������������������������������������������� pp (t + 0.5).iso8601(10) # => "1999-12-31T23:59:59.5000000000Z" pp (t + 0.6 - 0.1).iso8601(10) # => "1999-12-31T23:59:59.4999999999Z" ``` ������������������������������������������������������������������������������������������������������������������������������ pull request : https://github.com/ruby/ruby/pull/2092 -- https://bugs.ruby-lang.org/ Unsubscribe: