16354


ダメ元で元号を`Date.parse`で変換できるかと思い試してみたところ

[code]

    Date.parse("平成26年10月27日")
    # => Sat, 26 Sep 2015
    
[/code]

になりました。”平成”を抜いても結果は同じなのは確認したのと`26`が使われているのはわかるのですが年と月に関してはどうしてこのような結果になるのでしょうか？


CC BY-SA 3.0
2015-09-07T14:58:28.423
16350
2015-09-07T23:40:26.837
3271
question
ruby
Date.parseの解析について Date.parse("26年10月27日") #=> Sat, 26 Sep 2015


ruby の Date.parse は iso8601 と jisx0301 をサポートしています。  
詳しくは jisx0301 の規格書を参照下さい。以下でも参考になります。

<http://wiki.suikawiki.org/n/JISX0301>

iso8601 形式であれば YY-MM-DD が扱えるフォーマットの一つなので

[code]

    p Date.parse("15-10-27")
    
[/code]

は

[code]

    2015-10-27
    
[/code]

として扱われます。また JISX0301 では S や H 等の年号記号が接頭で付き SYY.MM.DD が扱えるフォーマットの一つなので

[code]

    p Date.parse("H26.10.27")
    
[/code]

は

[code]

    2014-10-27
    
[/code]

として扱われます。和暦の和名を扱いたいならば予め `平成` を `H` に置換するなどが必要かと思います。


CC BY-SA 3.0
2015-09-07T15:26:59.723
16353
2015-09-07T23:40:26.837
2015-09-07T23:40:26.837
440
440
16350
answer


最初の数字である 26 を日として扱った結果だと思います。年と月に関しては、今が 2015年9月だからそれが使われたのでしょう。

[code]

    Date.parse("26")' 
    #=> #<Date: 2015-09-26 ((2457292j,0s,0n),+0s,2299161j)>
    
[/code]


CC BY-SA 3.0
2015-09-07T15:57:59.147
16354
2015-09-07T15:57:59.147
3249
16350
answer