/ / RubyでのDateTimeのタイムゾーンの変更 - ruby​​、datetime、timezone

RubyでのDateTimeの時間帯の変更 - ruby​​、datetime、timezone

画像からexif情報を抽出しようとしています日付フィールドのタイムゾーンに問題があります。画像自体には、日付と時刻がタイムゾーンなしで保存されています(例:2014:01:07 20:44:32)。 exifrを実行するとDateTimeオブジェクトが返ってくるので、このコマンドで文字列を出力することができます。

created = date.strftime("%FT%T%:z")
=> "2014-01-07T20:44:32+01:00" # on my system with UTC+1
=> "2014-01-07T20:44:32+00:00" # on TravisCI

出力のタイムゾーンは、システム設定コードを実行するシステムとは関係なく、特定のイメージに対して同じ値を取得する必要があるため、これは問題です。タイムゾーンが常にUTCの場合に役立ちます。

システム設定に関係なく、UTCで一貫した結果を得るにはどうすればよいですか。そして、どうすればこれをRuby 1.9と2.0でやることができますか?私はRailsには多くの解決策を見つけましたが、普通のRubyには解決できません。手伝って頂けますか?

回答:

回答№1の場合は3

utc メソッド変換 Time UTCへ。

created = date.utc.strftime("%FT%T%:z")

このメソッドは1.8.7、1.9.3、2.0.0および2.1.0で利用可能です。

タイムゾーンを変更するときに時間に影響を与えたくない場合は、変換する前に差を追加することができます。

time = Time.now         # => 2014-01-08 21:45:41 +0100
time += time.gmt_offset # => 2014-01-08 22:45:41 +0100
time.utc                # => 2014-01-08 21:45:41 UTC