Class: Datte::Dattetime
- Inherits:
-
Object
- Object
- Datte::Dattetime
- Defined in:
- lib/datte/dattetime.rb
Constant Summary collapse
- DEFAULT_OPTIONS =
{ force_update: false, level: 1 }
Instance Attribute Summary collapse
-
#day ⇒ Object
readonly
Returns the value of attribute day.
-
#hour ⇒ Object
readonly
Returns the value of attribute hour.
-
#min ⇒ Object
readonly
Returns the value of attribute min.
-
#month ⇒ Object
readonly
Returns the value of attribute month.
-
#year ⇒ Object
readonly
Returns the value of attribute year.
Instance Method Summary collapse
-
#after(md) ⇒ Object
何年後、何ヶ月後、何日後, 何時間後, 何分後.
-
#initialize(options = {}) ⇒ Dattetime
constructor
A new instance of Dattetime.
- #to_datetime ⇒ Object
-
#update_date(md, options = @options) ⇒ Object
年か月か日を更新.
-
#update_time(md, options = @options) ⇒ Object
時か分を更新.
Constructor Details
#initialize(options = {}) ⇒ Dattetime
Returns a new instance of Dattetime.
11 12 13 14 |
# File 'lib/datte/dattetime.rb', line 11 def initialize( = {}) @options = DEFAULT_OPTIONS.merge() @date = DateTime.now end |
Instance Attribute Details
#day ⇒ Object (readonly)
Returns the value of attribute day.
9 10 11 |
# File 'lib/datte/dattetime.rb', line 9 def day @day end |
#hour ⇒ Object (readonly)
Returns the value of attribute hour.
9 10 11 |
# File 'lib/datte/dattetime.rb', line 9 def hour @hour end |
#min ⇒ Object (readonly)
Returns the value of attribute min.
9 10 11 |
# File 'lib/datte/dattetime.rb', line 9 def min @min end |
#month ⇒ Object (readonly)
Returns the value of attribute month.
9 10 11 |
# File 'lib/datte/dattetime.rb', line 9 def month @month end |
#year ⇒ Object (readonly)
Returns the value of attribute year.
9 10 11 |
# File 'lib/datte/dattetime.rb', line 9 def year @year end |
Instance Method Details
#after(md) ⇒ Object
何年後、何ヶ月後、何日後, 何時間後, 何分後
37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 |
# File 'lib/datte/dattetime.rb', line 37 def after(md) if md.matched?(:year) @year, @month, @day = now[:year] + md[:year].to_i, now[:month], now[:day] end if md.matched?(:month) carry = (now[:month] + md[:month].to_i) / 12 @year, @month, @day = now[:year] + carry, now[:month] + md[:month].to_i , now[:day] end if md.matched?(:day) days = [31,28,31,30,31,30,31,31,30,31,30,31][now[:month] - 1] carry = (now[:day] + md[:day].to_i) / days @year, @month, @day = now[:year], now[:month] + carry, now[:day] + md[:day].to_i - carry * days end if md.matched?(:hour) carry = (now[:hour] + md[:hour].to_i) / 24 @day, @hour = now[:day] + carry, now[:hour] + md[:hour].to_i - carry * 24, now[:min] end # @date >> (md[:year].to_i * 12) if md.matched?(:year) # 何年後 # @date >> md[:month].to_i if md.matched?(:month) # 何ヶ月後 # @date + md[:day].to_i if md.matched?(:day) # 何日後 # @date + Rational(md[:hour].to_i, 24) if md.matched?(:hour) # 何時間後 # @date + Rational(md[:hour].to_i, 24 * 60) if md.matched?(:hour) # 何分後 end |
#to_datetime ⇒ Object
16 17 18 19 |
# File 'lib/datte/dattetime.rb', line 16 def to_datetime return nil unless check_level? DateTime.new(y, m, d, h, mi, 0) rescue nil end |
#update_date(md, options = @options) ⇒ Object
年か月か日を更新
22 23 24 25 26 27 |
# File 'lib/datte/dattetime.rb', line 22 def update_date(md, = @options) op = @options[:force_update] ? '=' : '||=' eval("@year #{op} year!(md)") eval("@month #{op} month!(md)") eval("@day #{op} day!(md)") end |
#update_time(md, options = @options) ⇒ Object
時か分を更新
30 31 32 33 34 |
# File 'lib/datte/dattetime.rb', line 30 def update_time(md, = @options) op = @options[:force_update] ? '=' : '||=' eval("@hour #{op} hour!(md)") eval("@min #{op} min!(md)") end |