Method: When::TM::DateAndTime#floor
- Defined in:
- lib/when_exe/tmptypes.rb
#floor(digit = DAY, precision = digit) ⇒ When::TM::DateAndTime
下位桁の切り捨て
1061 1062 1063 1064 1065 1066 1067 1068 1069 1070 1071 1072 1073 1074 1075 1076 1077 1078 1079 1080 1081 1082 1083 1084 1085 1086 1087 1088 1089 1090 |
# File 'lib/when_exe/tmptypes.rb', line 1061 def floor(digit=DAY, precision=digit) count = digit - clock.indices.length if digit>=DAY date = @cal_date.dup elsif @calendar_era_props date = @cal_date.dup date[0] += calendar_era_epoch date = @frame._validate(date[0..(digit-1)]) date[0] -= calendar_era_epoch else date = @frame._validate(@cal_date[0..(digit-1)]) end time = @clk_time.clk_time[0..((digit<=DAY) ? 0 : ((count>=0) ? -1 : digit))] time[0] += to_i time = clock._validate(time) time[0] -= to_i if (count >= 0) factor = 10**count time[-1] = (time[-1] * factor).floor.to_f / factor end # オブジェクトの生成 = {:date=>date, :validate=>:done, :events=>nil, :query=>nil, :time=>(digit<=DAY) ? time : @clk_time.dup._copy({:time=>time})} [:precision] = precision if precision return self.dup._copy() end |