2038問題

/.jhttp://slashdot.jp/article.pl?sid=09/02/09/012251)にてUnix Timeが「1234567890」になることが記事になっていた。
Rubyで確認してみる。

C:\>ruby -e 'p Time.at(1234567890)'
Sat Feb 14 08:31:30 +0900 2009

C:\>ruby -e 'p Time.at(0x7fffffff)'
Tue Jan 19 12:14:07 +0900 2038

C:\>ruby -e 'p Time.at(0x80000000)'
-e:1:in `at': bignum too big to convert into `long' (RangeError)
        from -e:1

どーすんのかなーって調べてみた

C:\>irb
irb(main):001:0> require "date2"
=> true
irb(main):002:0> p DateTime.now.to_s
"2009-02-12T09:25:36+09:00"
=> nil
irb(main):003:0> p DateTime.new(2038, 01, 20).to_s
"2038-01-20T00:00:00+00:00"
=> nil
irb(main):004:0> Date.new(2038,01,20).to_s
=> "2038-01-20"

「date2.rb」を使えばいいらしい。
 
大した手間を掛けなくてよさそう。