1

我认为 Ruby on Rails 中的 Time 对象存储时间,但是当我运行Time.now.beginning_of_day它时,它也会给我日期。我只是想捕捉时间而不是日期。有没有办法做到这一点?谢谢

4

1 回答 1

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")

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:00,所以你使用Time.now.beginning_of_day (让使用 Time.now 以获得更清晰的画面),那么答案应该是什么?所以这就是为什么我认为创建 rails 的那群人使用 UTC+0 作为标准,在你的情况下我推荐使用 Time.zone.now,最近我发现了一些有趣的博客,请参阅http://www .elabs.se/blog/36-working-with-time-zones-in-ruby-on-rails,希望对您有所帮助。如果您觉得缺少某些内容,请阅读本文的任何人,请随时编辑我的答案,非常感谢你们:)。

于 2012-11-12T04:16:13.923 回答