我认为Ruby on Rails中的Time对象会存储时间,但是当我运行Time.now.beginning_of_day
时,它也会给我一个日期。我只想捕捉时间而不是日期。有没有办法做到这一点?感谢
答案 0 :(得分:2)
是的,你必须做Rails日期格式 - strftime
请看这个纠结http://www.wetware.co.nz/2009/07/rails-date-formats-strftime/
和此链接http://apidock.com/ruby/DateTime/strftime
实施例: //在你的情况下,应该这样做 Time.now.beginning_of_day.strftime("%I:%M&#34)
With preceding zero (capital I)
Time.now.strftime("%I:%M") # => 05:21
Without preceding zero (lowercase L)
Time.now.strftime("%l:%M") # => 5:21
希望它有所帮助。
UPDATE
://以及关于Why is Time storing date information? Shouldn't it just be time?
对你提出问题的好处,正如vladr
上面提到的那样(I am sure that the group of people who create rails will think very similar to vladr mention above when they gonna design Time object in rail
),当你谈论时间时,它也与时区有关。在你的情况下,你想使用Time.now.beginning_of_day吗?我现在在泰国,并假设你在美国,美国时间比泰国慢12小时,所以现在在泰国,星期二上午10:00,然后在美国应该是星期一晚上10点,所以你使用Time.now.beginning_of_day(让我们使用Time.now获得更清晰的图片),那么答案应该是什么?这就是为什么我认为创建rails的人使用UTC + 0作为标准,在你的情况下我推荐使用Time.zone.now,最近我发现了一些有趣主题的博客,请参阅{ {3}},希望它有所帮助。任何读过这篇文章的人如果觉得缺少某些东西,请随时编辑我的答案,非常感谢你们:)。