루비에게 영화가왔다 🎉
Ruby 2.6.3 릴리스
2019/04/17 (수)에 Ruby 2.6.3이 출시되었습니다.
주요 변경 사항은
이 릴리스에서는 일본의 신원호 「영화」의 서포트를 추가하고 있습니다. 구체적으로는 유니코드 버전을 12.1 베타(#15195)로 업데이트하고 date 라이브러리를 업데이트합니다(#15742).
라는 것입니다.
마침내 Ruby에 령화가 왔습니다!
확인
유니코드 정보
「영화」의 합자 1인 U+32FF 가 Unicode 12.1 으로 예약되어 있습니다. 그리고 Ruby 2.6.3은 베타 버전인 Unicode 12.1 beta를 지원합니다.
Ruby 2.6.2
"\u32FF"
#=> "\u32FF"
Ruby 2.6.3
# 2019/04/18 (木) 時点では、ほとんどのフォントがまだ U+32FF (令和の合字) に対応していないので
# ほとんどの環境で豆腐になってしまう。
"\u32FF"
#=> "㋿"
# NFKD で Unicode 正規化すると……
"\u32FF".unicode_normalize(:nfkd)
#=> "令和"
2017 년 4 월 45 일 74 일.
Date 정보
Date#jisx0301 메소드로 화력( JIS X 0301 형식)을 취득할 수 있습니다만, 이것이 령화에 대응했습니다.
Ruby 2.6.2
require 'date'
Date.new(2019, 4, 30).jisx0301
#=> "H31.04.30"
Date.new(2019, 5, 1).jisx0301
#=> "H31.05.01"
Ruby 2.6.3
require 'date'
Date.new(2019, 4, 30).jisx0301
#=> "H31.04.30"
Date.new(2019, 5, 1).jisx0301
#=> "R01.05.01"
R01 키타 -
덤
Date 객체를 일본 달력 문자열로 변환하는 메서드를 구현해 보았습니다.
def wareki(date)
era_initials = %w[M T S H R]
era_names = %w[明治 大正 昭和 平成 令和]
wday_names = %w[日 月 火 水 木 金 土]
jisx0301_pattern = /\A([A-Z]?)(\d+)[\.-](\d+)[\.-](\d+)\z/
era_initial, year, month, day = date.jisx0301.match(jisx0301_pattern).captures
era_name = era_initials.zip(era_names).to_h[era_initial]
wday_name = wday_names[date.wday]
format('%s%d年%d月%d日(%s)', era_name, year, month, day, wday_name)
end
require 'date'
wareki(Date.new(1872, 12, 31))
#=> "1872年12月31日(火)"
wareki(Date.new(1873, 1, 1))
#=> "明治6年1月1日(水)"
wareki(Date.new(2019, 4, 30))
#=> "平成31年4月30日(火)"
wareki(Date.new(2019, 5, 1))
#=> "令和1年5月1日(水)"
㍼
( U+337C ) 이나 ㍻
( U+337B ) 와 같이 복수의 문자를 합성해 한 문자로 한 문자입니다. ↩
Reference
이 문제에 관하여(루비에게 영화가왔다 🎉), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/QUANON/items/bdd31eab4f9d699551fe
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
"\u32FF"
#=> "\u32FF"
# 2019/04/18 (木) 時点では、ほとんどのフォントがまだ U+32FF (令和の合字) に対応していないので
# ほとんどの環境で豆腐になってしまう。
"\u32FF"
#=> "㋿"
# NFKD で Unicode 正規化すると……
"\u32FF".unicode_normalize(:nfkd)
#=> "令和"
require 'date'
Date.new(2019, 4, 30).jisx0301
#=> "H31.04.30"
Date.new(2019, 5, 1).jisx0301
#=> "H31.05.01"
require 'date'
Date.new(2019, 4, 30).jisx0301
#=> "H31.04.30"
Date.new(2019, 5, 1).jisx0301
#=> "R01.05.01"
def wareki(date)
era_initials = %w[M T S H R]
era_names = %w[明治 大正 昭和 平成 令和]
wday_names = %w[日 月 火 水 木 金 土]
jisx0301_pattern = /\A([A-Z]?)(\d+)[\.-](\d+)[\.-](\d+)\z/
era_initial, year, month, day = date.jisx0301.match(jisx0301_pattern).captures
era_name = era_initials.zip(era_names).to_h[era_initial]
wday_name = wday_names[date.wday]
format('%s%d年%d月%d日(%s)', era_name, year, month, day, wday_name)
end
require 'date'
wareki(Date.new(1872, 12, 31))
#=> "1872年12月31日(火)"
wareki(Date.new(1873, 1, 1))
#=> "明治6年1月1日(水)"
wareki(Date.new(2019, 4, 30))
#=> "平成31年4月30日(火)"
wareki(Date.new(2019, 5, 1))
#=> "令和1年5月1日(水)"
Reference
이 문제에 관하여(루비에게 영화가왔다 🎉), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/QUANON/items/bdd31eab4f9d699551fe텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)