Module: JPDate::Era
- Defined in:
- lib/jpdate/era.rb
Constant Summary collapse
- ERAS =
[ ['1868-10-23', '1912-07-30', '明治', :M], ['1912-07-30', '1926-12-25', '大正', :T], ['1926-12-25', '1989-01-07', '昭和', :S], ['1989-01-08', '2019-04-30', '平成', :H], ['2019-05-01', '9999-12-31', 'XX', :X], ]
Class Method Summary collapse
-
.name_year(y, m = nil, d = nil, format: '%s%d年', human: true, short: false) ⇒ Object
和暦の元号と年を返す ===Example: JPDate::Era.name_year(2014) # => [“平成26年”] JPDate::Era.name_year(1926) # => [“大正15年”, “昭和元年”] JPDate::Era.name_year(1926, 11) # => [“大正15年”] JPDate::Era.name_year(1926, 12) # => [“大正15年”, “昭和元年”] JPDate::Era.name_year(1926, 12, 24) # => [“大正15年”] JPDate::Era.name_year(1926, 12, 25) # => [“大正15年”, “昭和元年”] JPDate::Era.name_year(1926, 12, 26) # => [“昭和元年”] JPDate::Era.name_year(1926, 12, 26, human: false) # => [“昭和1年”] JPDate::Era.name_year(1927, format: ‘%s%02d年’) # => [“昭和02年”].
-
.short_name_year(y, m = nil, d = nil) ⇒ Object
和暦のアルファベットの元号と年を返す ===Example: JPDate::Era.short_name_year(2014) # => [“H26”] JPDate::Era.short_name_year(1926) # => [“T15”, “S01”].
Class Method Details
.name_year(y, m = nil, d = nil, format: '%s%d年', human: true, short: false) ⇒ Object
和暦の元号と年を返す
Example:
JPDate::Era.name_year(2014) # => ["平成26年"]
JPDate::Era.name_year(1926) # => ["大正15年", "昭和元年"]
JPDate::Era.name_year(1926, 11) # => ["大正15年"]
JPDate::Era.name_year(1926, 12) # => ["大正15年", "昭和元年"]
JPDate::Era.name_year(1926, 12, 24) # => ["大正15年"]
JPDate::Era.name_year(1926, 12, 25) # => ["大正15年", "昭和元年"]
JPDate::Era.name_year(1926, 12, 26) # => ["昭和元年"]
JPDate::Era.name_year(1926, 12, 26, human: false) # => ["昭和1年"]
JPDate::Era.name_year(1927, format: '%s%02d年') # => ["昭和02年"]
27 28 29 30 31 32 33 34 35 36 37 |
# File 'lib/jpdate/era.rb', line 27 def name_year(y, m=nil, d=nil, format: '%s%d年', human: true, short: false) dates = [Date.new(y, m || 1, d || 1), Date.new(y, m || -1, d || -1)] eras = ERAS.select do |era_s, era_e| (0..1).inject(false) {|t, i| t || Date.parse(era_s) <= dates[i] && dates[i] <= Date.parse(era_e)} end eras.map do |s, e, v, initial| era_year = y - Date.parse(s).year + 1 res = sprintf(format, short ? initial : v, era_year) human ? res.sub(/(\D+)0*1(\D+|$)/, '\1元\2') : res end end |
.short_name_year(y, m = nil, d = nil) ⇒ Object
43 44 45 |
# File 'lib/jpdate/era.rb', line 43 def short_name_year(y, m=nil, d=nil) name_year(y, m, d, format: '%s%02d', human: false, short: true) end |