JSON の日付型

Rails 2.0 では対応されたかもしれないが、Rails 1.2 の時代には Time クラスに to_json メソッドが正しく定義されていなかった。

Timeオブジェクトに対するto_jsonメソッド呼び出し」によれば、

ActiveSupport::JSON::Encoders::define_encoder(Time) do |time|
  time.to_i.to_json
end

とすればいいらしい。

Time.to_i

Time オブジェクトは時刻を起算時からの経過秒数で保持しています。起算時は協定世界時(UTC、もしくはその旧称から GMT とも表記されます) の 1970年1月1日午前0時です。なお、うるう秒を勘定するかどうかはシステムによります。

とのこと。うるい秒って怖いな。

これを Javascript のほうでは、

d = new Date();
d.setTime([Ruby の Time.to_i の数値] * 1000)

ということで日付型に変換できるようだ。Date#setTime には、1970年1月1日0時0分0秒(GMT)からの秒数をミリ秒単位で設定する。

とほほのJavaScript入門(日付)を参考にした。