画像から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の場合は3utc
メソッド変換 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