Используете UTC с сиквелом?

Я хотел бы не хранить время в моем местном часовом поясе, но сиквел делает его действительно тяжелым для меня. Я могу установить их в UTC, прежде чем поместить их туда (немного мучительно), но потом, когда я их забираю обратно, предполагается, что они являются местными датами, а затем все они будут через 8 часов в будущем. Это то, что еще не было реализовано? И если так, есть ли обходные пути? Спасибо!

Ответы на вопрос(3)

но я считаю, что лучшее решение здесь изменилось с момента публикации оригинального ответа. Если вы установите

Sequel.default_timezone = :utc

Сиквел всегда будет относиться к UTC и не будет демонстрировать поведение, описанное в вопросе.

Найти больше информации наhttp://sequel.jeremyevans.net/rdoc/classes/Sequel/Timezones.html

Эта информация была взята изСиквел RDoc

Sequel can use either Time or DateTime for times returned from the database. It defaults to Time. To change it to DateTime, use:

Sequel.datetime_class = DateTime

Также убедитесь, что вы не храните информацию о часовом поясе в вашей базе данных. Я использую Postgres, а тип столбцаtimestamp without time zone.

Это должно привести к отображению даты / времени в UTC. Это сработало для меня при передаче даты / времени2009-07-13T03:22:53Z результат отображается как2009-07-13T03:22:53+00:00

Решение Вопроса

ить literal_datetime и / или literal_time для класса набора данных, который вы используете для возврата литеральной строки времени UTC.

Вывод их в UTC зависит от используемого вами адаптера. Например, адаптер postgres вызывает Sequel.string_to_datetime, который просто вызывает parse для Sequel.datetime_class (время по умолчанию). Если столбец datetime содержит информацию о часовом поясе, все должно работать нормально. Если он не включает информацию о часовом поясе, Time.parse предполагает, что ему дано местное время. В этом случае вы можете переопределить Sequel.string_to_datetime, чтобы убедиться, что он всегда возвращает время со смещением UTC (возможно, путем вызова Time.parse (s) .gmtime).

Ваш ответ на вопрос