Подтвердить что ты не робот

DateTime.now или Time.now?

Какой из двух я должен использовать в своем приложении Rails:

DateTime.now or Time.now

Есть ли вред при использовании обоих в приложении?

Могут ли быть какие-либо различия между ними в случае вышеупомянутого примера (now)? (В моей текущей системе они оба показывают одно и то же время)

4b9b3361

Ответ 1

В отношении Time.now (не DateTime.now):

Созданный объект будет создан с использованием разрешения, доступного на системных часах, и поэтому может включать дробные секунды.

a = Time.new      #=> Wed Apr 09 08:56:03 CDT 2003
b = Time.new      #=> Wed Apr 09 08:56:03 CDT 2003
a == b            #=> false
"%.6f" % a.to_f   #=> "1049896563.230740"
"%.6f" % b.to_f   #=> "1049896563.231466"

Ответ 2

Используйте (Date)Time.current вместо (Date)Time.now

Rails расширяет объекты Time и DateTime и включает свойство current для получения времени, в которое устанавливается среда Rails (по умолчанию = UTC), в отличие от времени сервера (может быть что угодно).

Это очень важно. Вы всегда должны работать в UTC, кроме случаев, когда конвертируются между часовыми поясами для ввода или отображения пользователей, но по умолчанию многие производственные системы не являются UTC. (например, Heroku установлен в PST (GMT -8))

См. статью здесь

Ответ 3

Если вы хотите получить время в часовом поясе приложения, вам нужно позвонить Time.zone.now, чтобы я обычно использовал.

Time.now и DateTime.now будут возвращать время в системном времени, которое часто устанавливается на UTC.