Convert to Japanese era.
Installation
Add this line to your application's Gemfile:
gem 'era_ja'
And then execute:
$ bundle
Or install it yourself as:
$ gem install era_ja
ruby version
See .travis.yml
NOTE :: era_ja does not support ruby 1.9.3 since 0.4.0
Usage
format string
strftime format string can be used as an argument.
Extra format strings provided by EraJa#to_era are:
- %o: era(alphabet)
- %O: era(kanzi)
- %1O: era(single kanzi)
- %E: era year
- %-E: era year(single digit format from 1 to 9)
- %K: era year(kanzi numeral) After the second year, make it a numeral
- %J: kanzi numeral
Time instance to Japanese era
require 'era_ja'
Time.mktime(2012,4,29).to_era # => "H24.04.29"
Time.mktime(2012,4,29).to_era("%O%E年%-m月%d日") # => "平成24年4月29日"
Time.mktime(2012,4,29).to_era("%O%JE年%Jm月%Jd日") # => "平成二十四年四月二十九日"
Date instance to Japanese era
require 'era_ja'
Date.new(2012,4,29).to_era # => "H24.04.29"
Date.new(2012,4,29).to_era("%O%E年%-m月%d日") # => "平成24年4月29日"
Date.new(2012,4,29).to_era("%O%JE年%Jm月%Jd日") # => "平成二十四年四月二十九日"
Convert numerals to kanzi
Time.mktime(2012,4,29).to_era("%JY年%Jm月%Jd日") # => "二千十二年四月二十九日"
Date.new(2012,4,29).to_era("%JY年%Jm月%Jd日") # => "二千十二年四月二十九日"
The first year to be 元
and the second and subsequent years to be numbers, you can use %K
.
Time.mktime(2019,5,1).to_era("%O%KE年%m月%d日") # => "令和元年05月01日"
Time.mktime(2020,5,1).to_era("%O%KE年%m月%d日") # => "令和02年05月01日"
Date.new(2019,5,1).to_era("%O%KE年%m月%d日") # => "令和元年05月01日"
Date.new(2020,5,1).to_era("%O%KE年%m月%d日") # => "令和02年05月01日"
Era names
To convert to single kanji era strings, you can use %1O
.
require 'era_ja'
Time.mktime(2012,4,29).to_era("%1O%E年%m月%d日") # => "平24年4月29日"
To convert to custom era strings, you can set era_names
.
require 'era_ja'
Time.mktime(2012,4,29).to_era(era_names: { heisei: ['h', '平'] }) # => "h24.04.29"
Time.mktime(2012,4,29).to_era("%O%E年%-m月%d日", era_names: { heisei: ['h', '平'] }) # => "平24年4月29日"
Time.mktime(2012,4,29).to_era("%O%JE年%Jm月%Jd日", era_names: { heisei: ['h', '平'] }) # => "平二十四年四月二十九日"
# same as Date
Checking a date is convertible
You can use era_convertible?
to check if a given date is convertible or not.
require 'era_ja'
Time.mktime(1868,9,7).era_convertible? #=> false
Time.mktime(1868,9,8).era_convertible? #=> true
See Note section for more details.
Support
Report issues and feature requests to github Issues. https://github.com/tomiacannondale/era_ja/issues
Contributing
- Fork it
- Create your feature branch (
git checkout -b my-new-feature
) - Commit your changes (
git commit -am 'Added some feature'
) - Push to the branch (
git push origin my-new-feature
) - Create a new Pull Request
Note
The following issues exist regarding era:
- The Meiji era starts at September 8, 1866, but that date is in the old Japanese lunar calendar.
- The start dates of the Taisho and Showa eras are the same as the end dates of the Meiji and Taisho eras respectively.
Author
tomi tomiacannondale@gmail.com
License
MIT License. For more information, please see LICENSE.