Конвертировать Time.now в ActiveSupport :: TimeZone - PullRequest
0 голосов
/ 03 июля 2018

Мой веб-сайт имеет функцию использования системного времени пользователя, если он не вошел в систему.

Проблема возникает при попытке проверить эту функциональность, так как Time.now.zone дает мне строковое представление зоны вместо ActiveSupport::TimeZone объекта.

Тот, который я получил от Time.now.zone, также не может быть использован для поиска часового пояса:

Time.now.zone
 => 'BST'

пока мне нужно:

 => #<ActiveSupport::TimeZone:0x00007ffe1afd9470 @name="Europe/London", @utc_offset=nil, @tzinfo=#<TZInfo::DataTimezone: Europe/London>>

Ответы [ 2 ]

0 голосов
/ 04 июля 2018

Благодаря @ Stefan мое недопонимание Time.now устранено, оно сообщает о времени работы сервера, а не пользователя, что, конечно, имеет смысл. К счастью, когда дело доходит до тестов, я могу предположить, что клиент и сервер находятся на одной машине, так что это не большая проблема.

Мне также удалось найти решение моей первоначальной проблемы. Метод, который я искал, был getlocal, который преобразует объект DateTime в системное время (как упомянуто выше, это будет серверное время, что хорошо в тестах). Это сделало тесты проходящими как на CircleCI, так и локально.

0 голосов
/ 03 июля 2018

Используйте Time.zone вместо Time.now.zone

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...