🖥

#Ruby や #Rails で 西暦 年月日を 自前でバリデーションする的な処理 ( Date.parse )

2019/11/03に公開

日付のstringに対して Date.paras する

Ruby では require が必要

require 'date'

成功ケース

8桁の数字でも ハイフン区切りでも スラッシュ区切りでも

なんとドット区切りもできた

[21] pry(main)> Date.parse('20200229')
=> #<Date: 2020-02-29 ((2458909j,0s,0n),+0s,2299161j)>

[34] pry(main)> Date.parse('2020.02.29')
=> #<Date: 2020-02-29 ((2458909j,0s,0n),+0s,2299161j)>
[35] pry(main)> Date.parse('2020/02/29')
=> #<Date: 2020-02-29 ((2458909j,0s,0n),+0s,2299161j)>
[36] pry(main)> Date.parse('2020-02-29')
=> #<Date: 2020-02-29 ((2458909j,0s,0n),+0s,2299161j)>

失敗ケース

不正なフォーマットや存在しない日付では例外を起こしてくれる

[23] pry(main)> Date.parse('2021-02-29')
ArgumentError: invalid date

[39] pry(main)> Date.parse('Wow')
ArgumentError: invalid date

謎ケース

7桁でもparseできる場合があるが、日付が妙だ

[28] pry(main)> Date.parse('2020229')
=> #<Date: 2020-08-16 ((2459078j,0s,0n),+0s,2299161j)>

Original by Github issue

https://github.com/YumaInaura/YumaInaura/issues/2659

チャットメンバー募集

何か質問、悩み事、相談などあればLINEオープンチャットもご利用ください。

https://line.me/ti/g2/eEPltQ6Tzh3pYAZV8JXKZqc7PJ6L0rpm573dcQ

Twitter

https://twitter.com/YumaInaura

公開日時

2019-11-03

Discussion