Заранее благодарен всем кто ответит.
У меня следующая ситуация. Клиентская сторона отправляет EXIF данные фотографии на сервер. Причем любая дата ( originalDateTime, dateTime или digitizedDateTime) отправляется в формате rfc3339 с обнуленным смещением (например:2017-20-10T12:50:30+00:00, почему именно так а не иначе, другой вопрос. Изменить сейчас я это не смогу). На серверной стороне происходит ПРИМЕРНО следующее. Вычисляем timeZone на основе координат, создаем объект даты-времени с нужным смещением, затем приводим эту дату к определенному по умолчанию на сервере часовому поясу (Central Daylight Time) и сохраняем потом в БД. Я не могу изменить сейчас то, в каком формате мы получаем дату, и в каком сохраняем в БД. Далее из БД, эта дата вынимается, конвертируется снова в формат rfc3339, и отправляет клиентской стороне.
Я думаю, здесь точно есть какая-то ошибка, с конвертированием даты и времени, которую я сейчас не могу увидеть.
Вопрос: Есть ли во всех этих действиях что-то вообще валидное?
if picture[:picture_timestamp]
if picture[:latitude] && picture[:longitude]
parsed_date_time = DateTime.rfc3339(picture[:picture_timestamp]).to_s(:db)
timezone = Timezone.lookup(picture[:latitude], picture[:longitude])
date_obj = ActiveSupport::TimeZone[timezone.name].parse(parsed_date_time)
date_with_offset = DateTime.new(date_obj.year, date_obj.month, date_obj.day, date_obj.hour, date_obj.min, date_obj.sec, date_obj.zone).to_s
@dailypost.picture_timestamp = Time.zone.parse(date_with_offset)
end
end