首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >我什么时候应该在ruby/rails中使用DateTime和日期、时间字段?

问我什么时候应该在ruby/rails中使用DateTime和日期、时间字段?
EN

Stack Overflow用户
提问于 2012-02-04 12:53:01
回答 1查看 10.8K关注 0票数 14

我目前有单独的game_date和game_time字段,由于时区问题,我很难将我的DateTime.now与连接在一起的DateTime进行比较。我是否应该将我的数据库重新设计为只使用DateTime?我有一个单独的时间字段,因为在某些时间点上时间可以是空的。典型的做法是什么?另外,我应该如何解决以下时区的问题?

代码语言:javascript
复制
    now = DateTime.now
    @upcoming_games = []
    @past_games = []
    games.each do |game|
      game.game_time = DateTime.now if game.game_time.nil?
      dt = DateTime.parse("#{game.game_date}T#{game.game_time.strftime("%H:%M:00")}")
      if dt >= now
        @upcoming_games << game
      else
        @past_games << game
      end
    end
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-02-04 13:13:24

一般的想法是使用DateTime作为时间的通用表示。您可能会感到困惑的是,Time还包括一个date组件,因为它是UNIX time_t中自纪元以来的秒数概念的封装,在MySQL术语中是UNIX_TIME()。

由于I explain in another answer,时间是比DateTime更有限的表示形式,并且只能表示到2038年1月18日为止的日期和时间。DateTime可以代表公元前4,712年以及未来的21,000年。

如果您想要一个单独的字段来表示一天中的时间,那么您应该创建一个单独的数值字段来表示午夜过后的秒数(如果需要这种精度的话),或者创建一个更方便的"HHMM“表示,它本身不关心base-60和base-10之间的差异。

另一种选择是有两个字段,一个是DateTime,另一个是日期。如果要创建没有特定时间的日历条目,请仅填充日期字段。如果有时间,则同时填充这两个参数。

请记住,日期字段是用文字日期填充的,与时区无关,因此如果它不是用用户的本地时间表示的,这可能会带来麻烦。如果需要,DateTime始终可以转换为用户的本地时间。

票数 22
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9138515

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档