Использование datetime из Rails в Phoenix с Ecto

У меня есть база данных, созданная в приложении Rails, и теперь я хочу использовать эту же базу данных в приложении Phoenix (используя Ecto). Основная проблема в настоящее время связана со значениями даты и времени.

Приложение Rails показывает мне такие вещи:

Tue, 06 Feb 2018 00:13:36 -02 -02:00

И запрос Ecto в той же таблице показывает:

[{{2018, 2, 6}, {2, 13, 36, 22082}}]

Обратите внимание на потерянный часовой пояс.

БД в приложении Phoenix не имеет схемы, и это необходимо.

Итак, я хочу сохранить информацию о часовом поясе и преобразовать данные в более удобный формат для вычислений.

Есть ли способ сделать это?

Экто ~ 3,0

Феникс ~ 1.2.1

Рельсы ~ 5


person CFLS    schedule 09.02.2018    source источник


Ответы (1)


Rails не хранит данные о часовых поясах в базе данных. Все значения даты и времени хранятся в формате UTC. Когда вы запрашиваете поле datetime в объекте ActiveRecord, он преобразует вывод в часовой пояс, установленный в вашем файле application.rb, используя config.time_zone =.

person moveson    schedule 09.02.2018
comment
Интересно! Я обнаружил этот конфиг и уже определился. Но я понимаю, что эта информация не имеет значения, если я не сохранил правильный часовой пояс для всех входных данных (большая страна, ха-ха). Итак, сейчас это больше не проблема, но я оставлю этот пост открытым на время на всякий случай, если появятся более интересные ответы. Спасибо, @moveson - person CFLS; 09.02.2018