Rails 2.0 のXMLとHTMLでの時刻の取り扱い方

htmlでPOST(PUT)したときと、xmlでPOST(PUT)したときでは時刻の扱いが異なる。

HTMLはそのまま受け取ってしまうようだが、XMLで受け取るとUTCに変換するようだ。
プログラムのつくりではそのままMySQLのdatetimeに突っ込むのだが、MySQLにはTimezoneという考えがないようだ。するとそのまま作ると、HTMLでPOSTするとローカル時間、xmlでPOSTするとUTC時間となる。

それを呼び出すときはその区別がないので、MySQLにTimezoneのカラムを用意してプログラムで扱うか、どちらかに時間を合わせなければいけない。


いろいろ考えて、ローカル時間に合わせるとする(海外進出を考えるならばTimezoneを考慮しないといけないが)。
以下のようなプログラムをupdateのところにつけた時刻補正した。

case request.format
    when Mime::XML, Mime::ATOM
      params[:plan]['start_datetime']
          = params[:plan]['start_datetime'].to_time.getlocal.to_s
      params[:plan]['end_datetime']
          = params[:plan]['end_datetime'].to_time.getlocal.to_s
    else
      @plan.start_datetime = DateTime.parse("#{params[:start_date]} #{params[:start_time]}") if params[:start_date] or params[:start_time]
      @plan.end_datetime = DateTime.parse("#{params[:end_date]} #{params[:end_time]}") if params[:end_date] or params[:end_time]
end