加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ruby-on-rails – 什么时候应该使用DateTime vs date,ruby / rai

发布时间:2020-12-16 20:27:59 所属栏目:百科 来源:网络整理
导读:我目前有单独的game_date和game_time字段,我有一个时间比较我的DateTime.now到一个连接的DateTime,因为时区问题.我应该重新设计我的数据库来使用DateTime吗?我有一个时间字段,因为在某些时间点的时间可以是NULL.什么是典型的做法,以及如何在下面的时区解决
我目前有单独的game_date和game_time字段,我有一个时间比较我的DateTime.now到一个连接的DateTime,因为时区问题.我应该重新设计我的数据库来使用DateTime吗?我有一个时间字段,因为在某些时间点的时间可以是NULL.什么是典型的做法,以及如何在下面的时区解决我的问题?
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

解决方法

一般的想法是使用DateTime作为时间的通用表示.你可能会感到困惑的是,Time还包括一个日期组件,因为它是从epoch或UNIX_TIME()在MySQL术语中的UNIX time_t概念的封装.

在explain in another answer时,Time是一个比DateTime更有限的表示,只能代表到2038年1月18日的日期和时间.DateTime可以代表公元4,712年以及将来的21,000年.

如果您想要一个单独的字段,代表一天中的时间,您可能希望在这里,您应该创建一个单个数字字段,代表需要这种精度的午夜之间的秒数,或者更方便的“HHMM”表示这不关心基础60和基础10之间的差异.

另一个选择是有两个字段,一个是DateTime,一个是Date.如果您创建一个没有特定时间的日历项,只填充日期字段.如果它有一个时间,填充两者.

请记住,日期字段填充有文字日期,并不关心时区,因此如果在用户本地时间没有表达,可能会导致麻烦.如果需要,DateTime总是可以转换为用户的本地时间.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读