2016-09-12 2 views
0

В моем rails приложение, я сравнить date из моей базы данных для Time.nowRails сравнить время с TimeWithZone

Event.date_start >= Time.now 

Но Event.date_start является ActiveSupport::TimeWithZone

Все работает отлично, но я хочу знать, если сравнить время с TimeWithZone - это хороший способ, и если это не так, как это сделать?

ответ

3

Time.now также работает с TimeZone. Посмотрите на это:

Time.zone.now 
#=> Mon, 12 Sep 2016 16:51:54 UTC +00:00 

ExampleModel.date_start 
#=> Tue, 28 Jun 2016 12:39:26 UTC +00:00 

Time.zone 
#=> #<ActiveSupport::TimeZone:0x0055de104e3ce0 @name="UTC", @utc_offset=nil, @tzinfo=#<TZInfo::TimezoneProxy: Etc/UTC>, @current_period=#<TZInfo::TimezonePeriod: nil,nil,#<TZInfo::TimezoneOffset: 0,0,UTC>>>> 

Вы можете сравнить это без ограничений :)

3

Лучшие практики не использовать Time.now в Rails приложения. Вместо этого используйте Time.current. Он также возвращает ActiveSupport::TimeWithZone.

+1

Спасибо. 'Time.current' использует' config.time_zone' в ** config/application.rb **? – Alexandre

+1

'Time.current' такой же, как' Time.zone.now' :) –

+0

точно @ BartekGładys, но он добавляет меньше шума ABC (1 против 2 метода invocations) :) – MikDiet

Смежные вопросы