SlideShare a Scribd company logo
takot
 諸事情によりRuby                    1.8.[56] でやってます
                        /)
                     ///)
                  /,.=゙''"/
      /          i f ,.r='"-‐'つ____            Ruby1.9? こまけぇこたぁいいんだよ!!
    /          /        _,.-‐'~/⌒ ⌒\
        /     ,i       ,二ニ⊃( ●). (●)\
      /     ノ         il゙フ::::::⌒(__人__)⌒::::: \
          ,イ「ト、 ,!,!|             |r┬-|         |
         / iトヾヽ_/ィ"\                `ー'´      /
発端
   最初はスクレイピング
    して取ってくる「平成
    21年10月3日(土)」を
    parseしたかった
   URLに
    …/h211003.html みた
    いなのがあったので日
    和る
   これ(h211003)を取り
    出してDateオブジェク
    トに変換したい
   一般的にはDate.parse
    を使う
実際にやってみた
irb(main):002:0> d = Date.parse("h211003")
 #<Date: 3458007/2,0,2299161>
irb(main):004:0> p d.year
21
=> nil
irb(main):005:0> p d.day
3
 nil
 irb(main):007:0> p d.month
10
=> nil
   年のが失敗する……orz
   だが……
ただし
irb(main):008:0> d =
    Date.parse("H21.10.03")
=> #<Date:
    4910215/2,0,2299161>
irb(main):009:0> p d.year
2009
=>
nil
   “H21.10.03”なら行け
    る
これは勝つる!
どこで表記を調べてるか辿ってみた

            まずDate.rbを読んだ
            require „format‟ してる
            /lib/ruby/1.8/date/format.r
             bの中でいろんなパターン
             マッチングで涙ぐましい
             努力をしてる
            format.rb 読めばよくね?
format.rb
def self._parse_jis(str, e) # :nodoc:
 if str.sub!(/¥b([MTSH])(¥d+)¥.(¥d+)¥.(¥d+)/in, ' ')
   era = { 'm'=>1867,
        't'=>1911,
        's'=>1925,
        'h'=>1988
    }[$1.downcase]
   e.year = $2.to_i + era
   e.mon = $3.to_i
   e.mday = $4.to_i
   true
 end
end
   if str.sub!(/¥b([MTSH])(¥d+)¥.(¥d+)¥.(¥d+)/in, ' ')
if str.sub!(/¥b([MTSH])(¥d+)¥.(¥d+)¥.(¥d+)/in,
   ' ') ||
   str.sub!(/¥b([MTSH])(¥d{2})(¥d{2})(¥d{2})/in,
   ' ')
自作
   自分のスクリプト内でDate._parse_jis をoverride
   format.rb を直接書き換えても良いが,副作用を減らす
# to expand Japanese calendar parsing
def Date._parse_jis(str, e) # :nodoc:
 if str.sub!(/¥b([MTSH])(¥d+)¥.(¥d+)¥.(¥d+)/in, ' ') ||
     str.sub!(/¥b([MTSH])(¥d{2})(¥d{2})(¥d{2})/in, ' ')
   era = { 'm'=>1867,
          't'=>1911,
          's'=>1925,
          'h'=>1988
   }[$1.downcase]
   # p era # => 1988
   e.year = $2.to_i + era
   e.mon = $3.to_i
   e.mday = $4.to_i
   true
 end
end
できた!
d = Date.parse("h211003")
p d.year # => 2009
p d.month
p d.mday
% ./test.rb
2009
10
3
Future work
 当初の平成21年10月3日(土) とか 2009
  年10月3日 に対応したい
 Date.parse_jis のやり方が分かったので
  案外何とかなるかも
まとめ
 オレオレ日付のparseが
  したかったら,
  Date._parse_jis (など)
  をoverrideしよう!
 慶長9年 => K9. みたい
  のもいける!

More Related Content

What's hot

30days Albumの裏側〜監視・インフラCI事情〜 #monitoringcasual
30days Albumの裏側〜監視・インフラCI事情〜 #monitoringcasual30days Albumの裏側〜監視・インフラCI事情〜 #monitoringcasual
30days Albumの裏側〜監視・インフラCI事情〜 #monitoringcasual
Takahiro Okumura
 
部活でシェル芸がはやらない
部活でシェル芸がはやらない部活でシェル芸がはやらない
部活でシェル芸がはやらない
xztaityozx
 
Play frameworkをエヴァンジェる
Play frameworkをエヴァンジェるPlay frameworkをエヴァンジェる
Play frameworkをエヴァンジェる
ke-m kamekoopa
 
柿と杮
柿と杮柿と杮
柿と杮
xztaityozx
 
Redis Intro Osc2010 Tokyo Spring
Redis Intro Osc2010 Tokyo SpringRedis Intro Osc2010 Tokyo Spring
Redis Intro Osc2010 Tokyo SpringMakoto Ohnami
 
zsh とわたし
zsh とわたし zsh とわたし
zsh とわたし
Toshihiko Shimokawa
 
OCamlでJavaScriptが幸せ
OCamlでJavaScriptが幸せOCamlでJavaScriptが幸せ
OCamlでJavaScriptが幸せ
Sachirou Inoue
 
シェル芸をドット絵にして思いを伝えよう!
シェル芸をドット絵にして思いを伝えよう!シェル芸をドット絵にして思いを伝えよう!
シェル芸をドット絵にして思いを伝えよう!
xztaityozx
 
Web技術勉強会 第37回
Web技術勉強会 第37回Web技術勉強会 第37回
Web技術勉強会 第37回
龍一 田中
 
入門 超絶技巧プログラミング !
入門 超絶技巧プログラミング !入門 超絶技巧プログラミング !
入門 超絶技巧プログラミング !
Nobutada Matsubara
 

What's hot (11)

30days Albumの裏側〜監視・インフラCI事情〜 #monitoringcasual
30days Albumの裏側〜監視・インフラCI事情〜 #monitoringcasual30days Albumの裏側〜監視・インフラCI事情〜 #monitoringcasual
30days Albumの裏側〜監視・インフラCI事情〜 #monitoringcasual
 
部活でシェル芸がはやらない
部活でシェル芸がはやらない部活でシェル芸がはやらない
部活でシェル芸がはやらない
 
Play frameworkをエヴァンジェる
Play frameworkをエヴァンジェるPlay frameworkをエヴァンジェる
Play frameworkをエヴァンジェる
 
Oneliner
OnelinerOneliner
Oneliner
 
柿と杮
柿と杮柿と杮
柿と杮
 
Redis Intro Osc2010 Tokyo Spring
Redis Intro Osc2010 Tokyo SpringRedis Intro Osc2010 Tokyo Spring
Redis Intro Osc2010 Tokyo Spring
 
zsh とわたし
zsh とわたし zsh とわたし
zsh とわたし
 
OCamlでJavaScriptが幸せ
OCamlでJavaScriptが幸せOCamlでJavaScriptが幸せ
OCamlでJavaScriptが幸せ
 
シェル芸をドット絵にして思いを伝えよう!
シェル芸をドット絵にして思いを伝えよう!シェル芸をドット絵にして思いを伝えよう!
シェル芸をドット絵にして思いを伝えよう!
 
Web技術勉強会 第37回
Web技術勉強会 第37回Web技術勉強会 第37回
Web技術勉強会 第37回
 
入門 超絶技巧プログラミング !
入門 超絶技巧プログラミング !入門 超絶技巧プログラミング !
入門 超絶技巧プログラミング !
 

Viewers also liked

Ejercicio 56
Ejercicio 56Ejercicio 56
Ejercicio 56
aitoor1234
 
La mision del colibri
La mision del colibriLa mision del colibri
La mision del colibri
epilarbg
 
Tema 1. multiplicación y división
Tema 1. multiplicación y divisiónTema 1. multiplicación y división
Tema 1. multiplicación y división
Daniel Calvente Calvente
 
La leyenda del colibrí
La leyenda del colibríLa leyenda del colibrí
La leyenda del colibrí
SweetAngel55
 

Viewers also liked (6)

Ejercicio 56
Ejercicio 56Ejercicio 56
Ejercicio 56
 
La mision del colibri
La mision del colibriLa mision del colibri
La mision del colibri
 
Tema 1. multiplicación y división
Tema 1. multiplicación y divisiónTema 1. multiplicación y división
Tema 1. multiplicación y división
 
La leyenda del colibrí
La leyenda del colibríLa leyenda del colibrí
La leyenda del colibrí
 
Divisiones entre 10
Divisiones entre 10Divisiones entre 10
Divisiones entre 10
 
Modenf.powerpoint
Modenf.powerpointModenf.powerpoint
Modenf.powerpoint
 

Similar to Rubyで和暦をよみとる

20131102 第7回シェル芸勉強会
20131102 第7回シェル芸勉強会20131102 第7回シェル芸勉強会
20131102 第7回シェル芸勉強会
Ryuichi Ueda
 
Ruby を用いた超絶技巧プログラミング(夏のプログラミングシンポジウム 2012)
Ruby を用いた超絶技巧プログラミング(夏のプログラミングシンポジウム 2012)Ruby を用いた超絶技巧プログラミング(夏のプログラミングシンポジウム 2012)
Ruby を用いた超絶技巧プログラミング(夏のプログラミングシンポジウム 2012)
mametter
 
モテる! Node.js でつくる twitter ボット制作
モテる! Node.js でつくる twitter ボット制作モテる! Node.js でつくる twitter ボット制作
モテる! Node.js でつくる twitter ボット制作
hecomi
 
Title
TitleTitle
Title
stucon
 
ゲーム開発者のための C++11/C++14
ゲーム開発者のための C++11/C++14ゲーム開発者のための C++11/C++14
ゲーム開発者のための C++11/C++14
Ryo Suzuki
 

Similar to Rubyで和暦をよみとる (6)

Data munging
Data mungingData munging
Data munging
 
20131102 第7回シェル芸勉強会
20131102 第7回シェル芸勉強会20131102 第7回シェル芸勉強会
20131102 第7回シェル芸勉強会
 
Ruby を用いた超絶技巧プログラミング(夏のプログラミングシンポジウム 2012)
Ruby を用いた超絶技巧プログラミング(夏のプログラミングシンポジウム 2012)Ruby を用いた超絶技巧プログラミング(夏のプログラミングシンポジウム 2012)
Ruby を用いた超絶技巧プログラミング(夏のプログラミングシンポジウム 2012)
 
モテる! Node.js でつくる twitter ボット制作
モテる! Node.js でつくる twitter ボット制作モテる! Node.js でつくる twitter ボット制作
モテる! Node.js でつくる twitter ボット制作
 
Title
TitleTitle
Title
 
ゲーム開発者のための C++11/C++14
ゲーム開発者のための C++11/C++14ゲーム開発者のための C++11/C++14
ゲーム開発者のための C++11/C++14
 

Recently uploaded

論文紹介:When Visual Prompt Tuning Meets Source-Free Domain Adaptive Semantic Seg...
論文紹介:When Visual Prompt Tuning Meets Source-Free Domain Adaptive Semantic Seg...論文紹介:When Visual Prompt Tuning Meets Source-Free Domain Adaptive Semantic Seg...
論文紹介:When Visual Prompt Tuning Meets Source-Free Domain Adaptive Semantic Seg...
Toru Tamaki
 
FIDO Alliance Osaka Seminar: CloudGate.pdf
FIDO Alliance Osaka Seminar: CloudGate.pdfFIDO Alliance Osaka Seminar: CloudGate.pdf
FIDO Alliance Osaka Seminar: CloudGate.pdf
FIDO Alliance
 
CS集会#13_なるほどわからん通信技術 発表資料
CS集会#13_なるほどわからん通信技術 発表資料CS集会#13_なるほどわからん通信技術 発表資料
CS集会#13_なるほどわからん通信技術 発表資料
Yuuitirou528 default
 
MPAなWebフレームワーク、Astroの紹介 (その2) 2024/05/24の勉強会で発表されたものです。
MPAなWebフレームワーク、Astroの紹介 (その2) 2024/05/24の勉強会で発表されたものです。MPAなWebフレームワーク、Astroの紹介 (その2) 2024/05/24の勉強会で発表されたものです。
MPAなWebフレームワーク、Astroの紹介 (その2) 2024/05/24の勉強会で発表されたものです。
iPride Co., Ltd.
 
【AI論文解説】Consistency ModelとRectified Flow
【AI論文解説】Consistency ModelとRectified Flow【AI論文解説】Consistency ModelとRectified Flow
【AI論文解説】Consistency ModelとRectified Flow
Sony - Neural Network Libraries
 
YugabyteDB適用に向けた取り組みと隠れた魅力 (DSS Asia 2024 発表資料)
YugabyteDB適用に向けた取り組みと隠れた魅力 (DSS Asia 2024 発表資料)YugabyteDB適用に向けた取り組みと隠れた魅力 (DSS Asia 2024 発表資料)
YugabyteDB適用に向けた取り組みと隠れた魅力 (DSS Asia 2024 発表資料)
NTT DATA Technology & Innovation
 
FIDO Alliance Osaka Seminar: Welcome Slides.pdf
FIDO Alliance Osaka Seminar: Welcome Slides.pdfFIDO Alliance Osaka Seminar: Welcome Slides.pdf
FIDO Alliance Osaka Seminar: Welcome Slides.pdf
FIDO Alliance
 
単腕マニピュレータによる 複数物体の同時組み立ての 基礎的考察 / Basic Approach to Robotic Assembly of Multi...
単腕マニピュレータによる 複数物体の同時組み立ての 基礎的考察 / Basic Approach to Robotic Assembly of Multi...単腕マニピュレータによる 複数物体の同時組み立ての 基礎的考察 / Basic Approach to Robotic Assembly of Multi...
単腕マニピュレータによる 複数物体の同時組み立ての 基礎的考察 / Basic Approach to Robotic Assembly of Multi...
Fukuoka Institute of Technology
 
論文紹介: Offline Q-Learning on diverse Multi-Task data both scales and generalizes
論文紹介: Offline Q-Learning on diverse Multi-Task data both scales and generalizes論文紹介: Offline Q-Learning on diverse Multi-Task data both scales and generalizes
論文紹介: Offline Q-Learning on diverse Multi-Task data both scales and generalizes
atsushi061452
 
【DLゼミ】XFeat: Accelerated Features for Lightweight Image Matching
【DLゼミ】XFeat: Accelerated Features for Lightweight Image Matching【DLゼミ】XFeat: Accelerated Features for Lightweight Image Matching
【DLゼミ】XFeat: Accelerated Features for Lightweight Image Matching
harmonylab
 
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアルLoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
CRI Japan, Inc.
 
FIDO Alliance Osaka Seminar: LY-DOCOMO-KDDI-Mercari Panel.pdf
FIDO Alliance Osaka Seminar: LY-DOCOMO-KDDI-Mercari Panel.pdfFIDO Alliance Osaka Seminar: LY-DOCOMO-KDDI-Mercari Panel.pdf
FIDO Alliance Osaka Seminar: LY-DOCOMO-KDDI-Mercari Panel.pdf
FIDO Alliance
 
TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024
TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024
TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024
Matsushita Laboratory
 
FIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdf
FIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdfFIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdf
FIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdf
FIDO Alliance
 
FIDO Alliance Osaka Seminar: NEC & Yubico Panel.pdf
FIDO Alliance Osaka Seminar: NEC & Yubico Panel.pdfFIDO Alliance Osaka Seminar: NEC & Yubico Panel.pdf
FIDO Alliance Osaka Seminar: NEC & Yubico Panel.pdf
FIDO Alliance
 
2024年度_サイバーエージェント_新卒研修「データベースの歴史」.pptx
2024年度_サイバーエージェント_新卒研修「データベースの歴史」.pptx2024年度_サイバーエージェント_新卒研修「データベースの歴史」.pptx
2024年度_サイバーエージェント_新卒研修「データベースの歴史」.pptx
yassun7010
 

Recently uploaded (16)

論文紹介:When Visual Prompt Tuning Meets Source-Free Domain Adaptive Semantic Seg...
論文紹介:When Visual Prompt Tuning Meets Source-Free Domain Adaptive Semantic Seg...論文紹介:When Visual Prompt Tuning Meets Source-Free Domain Adaptive Semantic Seg...
論文紹介:When Visual Prompt Tuning Meets Source-Free Domain Adaptive Semantic Seg...
 
FIDO Alliance Osaka Seminar: CloudGate.pdf
FIDO Alliance Osaka Seminar: CloudGate.pdfFIDO Alliance Osaka Seminar: CloudGate.pdf
FIDO Alliance Osaka Seminar: CloudGate.pdf
 
CS集会#13_なるほどわからん通信技術 発表資料
CS集会#13_なるほどわからん通信技術 発表資料CS集会#13_なるほどわからん通信技術 発表資料
CS集会#13_なるほどわからん通信技術 発表資料
 
MPAなWebフレームワーク、Astroの紹介 (その2) 2024/05/24の勉強会で発表されたものです。
MPAなWebフレームワーク、Astroの紹介 (その2) 2024/05/24の勉強会で発表されたものです。MPAなWebフレームワーク、Astroの紹介 (その2) 2024/05/24の勉強会で発表されたものです。
MPAなWebフレームワーク、Astroの紹介 (その2) 2024/05/24の勉強会で発表されたものです。
 
【AI論文解説】Consistency ModelとRectified Flow
【AI論文解説】Consistency ModelとRectified Flow【AI論文解説】Consistency ModelとRectified Flow
【AI論文解説】Consistency ModelとRectified Flow
 
YugabyteDB適用に向けた取り組みと隠れた魅力 (DSS Asia 2024 発表資料)
YugabyteDB適用に向けた取り組みと隠れた魅力 (DSS Asia 2024 発表資料)YugabyteDB適用に向けた取り組みと隠れた魅力 (DSS Asia 2024 発表資料)
YugabyteDB適用に向けた取り組みと隠れた魅力 (DSS Asia 2024 発表資料)
 
FIDO Alliance Osaka Seminar: Welcome Slides.pdf
FIDO Alliance Osaka Seminar: Welcome Slides.pdfFIDO Alliance Osaka Seminar: Welcome Slides.pdf
FIDO Alliance Osaka Seminar: Welcome Slides.pdf
 
単腕マニピュレータによる 複数物体の同時組み立ての 基礎的考察 / Basic Approach to Robotic Assembly of Multi...
単腕マニピュレータによる 複数物体の同時組み立ての 基礎的考察 / Basic Approach to Robotic Assembly of Multi...単腕マニピュレータによる 複数物体の同時組み立ての 基礎的考察 / Basic Approach to Robotic Assembly of Multi...
単腕マニピュレータによる 複数物体の同時組み立ての 基礎的考察 / Basic Approach to Robotic Assembly of Multi...
 
論文紹介: Offline Q-Learning on diverse Multi-Task data both scales and generalizes
論文紹介: Offline Q-Learning on diverse Multi-Task data both scales and generalizes論文紹介: Offline Q-Learning on diverse Multi-Task data both scales and generalizes
論文紹介: Offline Q-Learning on diverse Multi-Task data both scales and generalizes
 
【DLゼミ】XFeat: Accelerated Features for Lightweight Image Matching
【DLゼミ】XFeat: Accelerated Features for Lightweight Image Matching【DLゼミ】XFeat: Accelerated Features for Lightweight Image Matching
【DLゼミ】XFeat: Accelerated Features for Lightweight Image Matching
 
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアルLoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
 
FIDO Alliance Osaka Seminar: LY-DOCOMO-KDDI-Mercari Panel.pdf
FIDO Alliance Osaka Seminar: LY-DOCOMO-KDDI-Mercari Panel.pdfFIDO Alliance Osaka Seminar: LY-DOCOMO-KDDI-Mercari Panel.pdf
FIDO Alliance Osaka Seminar: LY-DOCOMO-KDDI-Mercari Panel.pdf
 
TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024
TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024
TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024
 
FIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdf
FIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdfFIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdf
FIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdf
 
FIDO Alliance Osaka Seminar: NEC & Yubico Panel.pdf
FIDO Alliance Osaka Seminar: NEC & Yubico Panel.pdfFIDO Alliance Osaka Seminar: NEC & Yubico Panel.pdf
FIDO Alliance Osaka Seminar: NEC & Yubico Panel.pdf
 
2024年度_サイバーエージェント_新卒研修「データベースの歴史」.pptx
2024年度_サイバーエージェント_新卒研修「データベースの歴史」.pptx2024年度_サイバーエージェント_新卒研修「データベースの歴史」.pptx
2024年度_サイバーエージェント_新卒研修「データベースの歴史」.pptx
 

Rubyで和暦をよみとる

  • 2.  諸事情によりRuby 1.8.[56] でやってます  /) ///) /,.=゙''"/ / i f ,.r='"-‐'つ____ Ruby1.9? こまけぇこたぁいいんだよ!! / / _,.-‐'~/⌒ ⌒\ / ,i ,二ニ⊃( ●). (●)\ / ノ il゙フ::::::⌒(__人__)⌒::::: \ ,イ「ト、 ,!,!| |r┬-| | / iトヾヽ_/ィ"\ `ー'´ /
  • 3.
  • 4. 発端  最初はスクレイピング して取ってくる「平成 21年10月3日(土)」を parseしたかった  URLに …/h211003.html みた いなのがあったので日 和る  これ(h211003)を取り 出してDateオブジェク トに変換したい  一般的にはDate.parse を使う
  • 5. 実際にやってみた irb(main):002:0> d = Date.parse("h211003")  #<Date: 3458007/2,0,2299161> irb(main):004:0> p d.year 21 => nil irb(main):005:0> p d.day 3  nil  irb(main):007:0> p d.month 10 => nil  年のが失敗する……orz  だが……
  • 6. ただし irb(main):008:0> d = Date.parse("H21.10.03") => #<Date: 4910215/2,0,2299161> irb(main):009:0> p d.year 2009 => nil  “H21.10.03”なら行け る
  • 8. どこで表記を調べてるか辿ってみた  まずDate.rbを読んだ  require „format‟ してる  /lib/ruby/1.8/date/format.r bの中でいろんなパターン マッチングで涙ぐましい 努力をしてる  format.rb 読めばよくね?
  • 9. format.rb def self._parse_jis(str, e) # :nodoc: if str.sub!(/¥b([MTSH])(¥d+)¥.(¥d+)¥.(¥d+)/in, ' ') era = { 'm'=>1867, 't'=>1911, 's'=>1925, 'h'=>1988 }[$1.downcase] e.year = $2.to_i + era e.mon = $3.to_i e.mday = $4.to_i true end end
  • 10. if str.sub!(/¥b([MTSH])(¥d+)¥.(¥d+)¥.(¥d+)/in, ' ')
  • 11. if str.sub!(/¥b([MTSH])(¥d+)¥.(¥d+)¥.(¥d+)/in, ' ') || str.sub!(/¥b([MTSH])(¥d{2})(¥d{2})(¥d{2})/in, ' ')
  • 12. 自作  自分のスクリプト内でDate._parse_jis をoverride  format.rb を直接書き換えても良いが,副作用を減らす # to expand Japanese calendar parsing def Date._parse_jis(str, e) # :nodoc: if str.sub!(/¥b([MTSH])(¥d+)¥.(¥d+)¥.(¥d+)/in, ' ') || str.sub!(/¥b([MTSH])(¥d{2})(¥d{2})(¥d{2})/in, ' ') era = { 'm'=>1867, 't'=>1911, 's'=>1925, 'h'=>1988 }[$1.downcase] # p era # => 1988 e.year = $2.to_i + era e.mon = $3.to_i e.mday = $4.to_i true end end
  • 13. できた! d = Date.parse("h211003") p d.year # => 2009 p d.month p d.mday % ./test.rb 2009 10 3
  • 14. Future work  当初の平成21年10月3日(土) とか 2009 年10月3日 に対応したい  Date.parse_jis のやり方が分かったので 案外何とかなるかも
  • 15. まとめ  オレオレ日付のparseが したかったら, Date._parse_jis (など) をoverrideしよう!  慶長9年 => K9. みたい のもいける!