[英]How to write DateTime.current in WHERE clause of Rails query?
[英]Minitest/Rails: DateTime.now versus DateTime.current in travel_to block
travel_to测试助手的以下行为是错误还是功能? 无论哪种方式,为什么会这样发生,并且应该在Rails代码中完全避免使用DateTime.now ?
使用ruby(2.3.1) , rails(4.2.6)和minitest(5.9.0) :
test 'traveling to 1900 (Time)' do
travel_to Time.new(1916, 1, 1, 7, 0, 0) do
puts Time.current
puts Time.now
puts DateTime.current
puts DateTime.now
puts Time.zone.now
puts Time.zone.today
end
end
=>
1916-01-01 07:00:00 UTC
1916-01-01 07:00:00 UTC
1916-01-01T07:00:00+00:00
2016-08-18T14:29:20+02:00
1916-01-01 07:00:00 UTC
1916-01-01
同样,
test 'traveling to 1900 (DateTime)' do
travel_to DateTime.new(1916, 1, 1, 7, 0, 0) do
puts Time.current
puts Time.now
puts DateTime.current
puts DateTime.now
puts Time.zone.now
puts Time.zone.today
end
end
=>
1916-01-01 07:00:00 UTC
1916-01-01 07:00:00 UTC
1916-01-01T07:00:00+00:00
2016-08-18T14:29:24+02:00
1916-01-01 07:00:00 UTC
1916-01-01
您可以尝试使用Time.zone.now
和Time.zone.today
吗?
恕我直言,这是应该在Rails项目中使用的API。 另请参阅http://danilenko.org/2012/7/6/rails_timezones/
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.