Eu tento extrair informações exif de uma imageme agora tem um problema com o fuso horário dos campos de data. Na própria imagem, a data e a hora são armazenadas sem fuso horário (por exemplo, 2014: 01: 07 20:44:32). Quando eu executo exifr eu recebo um objeto DateTime de volta e posso imprimi-lo em uma string com este comando:
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
O fuso horário da saída muda dependendoas configurações do sistema. Este é um problema, pois preciso obter os mesmos valores para uma imagem específica, independentemente do sistema em que executo o código. Ajudaria se o fuso horário fosse sempre UTC.
Como posso obter um resultado consistente no UTC independente das configurações do sistema? E como posso fazer isso com o Ruby 1.9 e 2.0? Eu encontrei muitas soluções para o Rails, mas não para o Ruby simples. Pode me ajudar?
Respostas:
3 para resposta № 1utc
método converte Time
para UTC.
created = date.utc.strftime("%FT%T%:z")
Este método está disponível em 1.8.7, 1.9.3, 2.0.0 e 2.1.0.
Se você não quer afetar o tempo ao mudar o fuso horário, você pode adicionar a diferença antes de converter:
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