Когда в Rails следует использовать `DateTime.now.utc` vs.` Time.current.utc`?

В Rails я немного запутался в руководстве между тем, когда использовать DateTime.now.utc и Time.current. Внутри структуры, по-видимому, существуют разные мнения, которые лучше всего, особенно в разных версиях.

Похоже, что DateTime.now.utc создает временную метку с нулевым временем UTC, а Time.current.utc создает временную метку с часовым поясом UTC. Это похоже на тонкое различие, но это очень важно во многих случаях (например, вычисления DST).

Когда вы должны использовать DateTime.now.utc, и когда вы должны использовать Time.current.utc? Есть ли причина использовать DateTime.now.utc вместо Time.current.utc?

Ответ 1

Я думаю, вы должны использовать .current вместо .now.

Разница в .current и .now равна .now, используя часовой пояс сервера, а .current используется то, к чему установлена ​​среда Rails. Если он не установлен, то .current будет таким же, как .now.

Time.current

Возвращает Time.zone.now, когда Time.zone или config.time_zone установлены, иначе просто возвращает Time.now.

Datetime.current

Возвращает Time.zone.now.to_datetime, когда Time.zone или config.time_zone, в противном случае возвращает Time.now.to_datetime.