Lock in $30 Savings on PRO—Offer Ends Soon! ⏳

あなたの知らないDateのひみつ / The Secret of "Date" You Hav...

Avatar for Shu OGAWARA Shu OGAWARA
November 29, 2025

あなたの知らないDateのひみつ / The Secret of "Date" You Haven't known #tqrk16

2025/11/29のTokyuRuby会議16で発表したスライドです。
https://tokyurubykaigi.github.io/tokyu16/

Avatar for Shu OGAWARA

Shu OGAWARA

November 29, 2025
Tweet

More Decks by Shu OGAWARA

Other Decks in Technology

Transcript

  1. Date.jisx0301('R07.11.29') # => #<Date: 2025-11-29 ((2461009j,0s,0n),+0s,2299161j)> Date.jisx0301('H37.11.29') # => #<Date:

    2025-11-29 ((2461009j,0s,0n),+0s,2299161j)> Date.jisx0301('S100.11.29') # => (irb):4:in 'Date.jisx0301': invalid date (Date::Error) 7 Date.jisx0301 ※そもそもJIS X 0301 が3桁以上の元号を想定してないので、この挙動は仕様通りで「昭和100年問題」とは⾔えません
  2. • ⼤河原 修(@expajp ) • 「えくすぱ」と読みます • VPoE@B4A • 今⽉からお世話になってます

    • 趣味 • 秘境駅めぐり🚃 • ラジオ📻 • 筋トレ💪 11 ⾃⼰紹介
  3. Date#england, #italy を実⾏してみる① Date.new(2025, 11, 29).italy # => #<Date: 2025-11-29

    ((2461009j,0s,0n),+0s,2299161j)> Date.new(2025, 11, 29).england # => #<Date: 2025-11-29 ((2461009j,0s,0n),+0s,2361222j)> 19
  4. Date#england, #italy を実⾏してみる② Date.new(1600, 11, 29).italy # => #<Date: 1600-11-29

    ((2305781j,0s,0n),+0s,2299161j)> Date.new(1600, 11, 29).england # => #<Date: 1600-11-19 ((2305781j,0s,0n),+0s,2361222j)> 20
  5. Date#england, #italy を実⾏してみる② Date.new(1600, 11, 29).italy # => #<Date: 1600-11-29

    ((2305781j,0s,0n),+0s,2299161j)> Date.new(1600, 11, 29).england # => #<Date: 1600-11-19 ((2305781j,0s,0n),+0s,2361222j)> 20
  6. Date#england, #italy を実⾏してみる② Date.new(1600, 11, 29).italy # => #<Date: 1600-11-29

    ((2305781j,0s,0n),+0s,2299161j)> Date.new(1600, 11, 29).england # => #<Date: 1600-11-19 ((2305781j,0s,0n),+0s,2361222j)> Date.new(1700, 11, 29).italy # => #<Date: 1700-11-29 ((2342305j,0s,0n),+0s,2299161j)> Date.new(1700, 11, 29).england # => #<Date: 1700-11-18 ((2342305j,0s,0n),+0s,2361222j)> 20
  7. Date#england, #italy を実⾏してみる② Date.new(1600, 11, 29).italy # => #<Date: 1600-11-29

    ((2305781j,0s,0n),+0s,2299161j)> Date.new(1600, 11, 29).england # => #<Date: 1600-11-19 ((2305781j,0s,0n),+0s,2361222j)> Date.new(1700, 11, 29).italy # => #<Date: 1700-11-29 ((2342305j,0s,0n),+0s,2299161j)> Date.new(1700, 11, 29).england # => #<Date: 1700-11-18 ((2342305j,0s,0n),+0s,2361222j)> 20
  8. • Date.julian_leap? • ユリウス暦で閏年かどうかを判別する • 初期に間違えて閏年を3年に1度⼊れていたことは考慮外だが るりまでちゃんとフォローされている • Date#ajd •

    その⽇AM0時の天⽂学的なユリウス⽇を返す • 細かい説明は割愛。⽤途としてはDate#jdで事⾜りるのでは︖ 27 他にもあるDateの細かすぎるメソッド