繁体   English   中英

Minitest / Rails:travel_to块中的DateTime.now与DateTime.current

[英]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.nowTime.zone.today吗?

恕我直言,这是应该在Rails项目中使用的API。 另请参阅http://danilenko.org/2012/7/6/rails_timezones/

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM