Module: EraJa::Conversion

Included in:
Date, Time
Defined in:
lib/era_ja/conversion.rb

Constant Summary collapse

ERA =
[["M", "明治"], ["T", "大正"], ["S", "昭和"], ["H", "平成"]]

Instance Method Summary collapse

Instance Method Details

#to_era(format = "%o%E.%m.%d") ⇒ String

Convert to Japanese era.

Parameters:

  • format_string (String)

    Time#strftime format string can be used

    extra format string

    • %o - era(alphabet)
    • %O - era(kanzi)
    • %E - era year
    • %J - kanzi number

Returns:

  • (String)


17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
# File 'lib/era_ja/conversion.rb', line 17

def to_era(format = "%o%E.%m.%d")
  @era_format = format
  @era_format.gsub!(/%J/, "%J%")
  @era_format.sub!(/%o/i) { |m| m + ' ' }
  @era_format.sub!(/%E/) { |m| m + ' ' }
  str_time = strftime(@era_format)
  if @era_format =~ /%E/
    if self.to_time < ::Time.mktime(1868,9,8)
      raise "#to_era is expeted later in 1868,9,8"
    elsif self.to_time < ::Time.mktime(1912,7,30)
      str_time = era_year(year - 1867, 'M')
    elsif self.to_time < ::Time.mktime(1926,12,25)
      str_time = era_year(year - 1911, 'T')
    elsif self.to_time < ::Time.mktime(1989,1,8)
      str_time = era_year(year - 1925, 'S')
    else
      str_time = era_year(year - 1988, 'H')
    end
  end
  str_time.gsub(/%J(\d+)/) { to_kanzi($1) }
end