Tag: datetime

我如何在Ruby on Rails中检查今晚9点到9点(明天)之间的当前时间

我需要检查当前时间是否在指定的时间间隔(今晚9点到明天上午9点)之间。 如何在Ruby on Rails中完成。 提前致谢

Rails日期与JSON – 第2部分

我成功地使用鸭子打孔机来重新格式化日期时间返回的日期,基于对其他人的问题给出的有用响应: 用json跟踪日期 我现在正在尝试为日期对象(而不是日期时间)做一个非常类似的事情,所以我修改了补丁如下: class ActiveSupport::Date # I’ve changed TimeWithZone to Date def as_json(options = {}) strftime(‘%Y’) end end …但它不起作用(日期格式与默认的2011-02-03相同)。 关于如何获得这一点的任何提示都非常受欢迎。

ActiveRecord:如果值无效,则中止datetime解析

我的ActiveRecord模型中有一个datetime字段(在Rails中),当date fieid超出范围时,我需要保护我的模型免于崩溃。 我发现了这个问题,并尝试做同样的事情 : class Something < ActiveRecord::Base validate :important_date_is_valid_datetime, on: :create validates :important_date, presence: true private def important_date_is_valid_datetime if (DateTime.parse(important_date.to_s()) rescue ArgumentError) == ArgumentError then errors.add(:important_date, 'must be a valid datetime') end end end 此代码可以“validation”datetime字段,但如果valie超出范围,则不会中止字段解析: irb(main):007:0> Something.new(important_date: “2015-20-40”).valid? ArgumentError: argument out of range from /home/shau-kote/.gem/ruby/2.1.0/gems/activesupport-4.2.0/lib/active_support/values/time_zone.rb:350:in `initialize’ from /home/shau-kote/.gem/ruby/2.1.0/gems/activesupport-4.2.0/lib/active_support/values/time_zone.rb:350:in `new’ from /home/shau-kote/.gem/ruby/2.1.0/gems/activesupport-4.2.0/lib/active_support/values/time_zone.rb:350:in `parse’ … 我可以防止类似的崩溃吗?

如何检查给定时间是在下午3点之后或不在Rails中?

我想要最简单或最简单的方法,它返回给我布尔值(true / false),具体取决于给定的时间是在下午3点之后,或者与日期无关。 对于前: – def after_three_pm(time) //some code here end time= Time.now # Tue Jul 26 11:17:27 +0530 2011 THEN after_three_pm(time) # should return false time= Time.now # Tue Jul 26 15:17:27 +0530 2011 THEN after_three_pm(time) # should return true

使用搜索逻辑的日期条件

Rails插件 – 来自二进制逻辑的Searchlogic – 提供按日期过滤的function。 我的表单设置如此…… 但是,我从控制器中生成的@search对象返回的日期… @search = Task.with_member(current_user).search(params[:search]) 生成一个看起来像这样的日期参数 {:due_at_after=>Sat, 31 Oct 2009 20:00:00 EDT -04:00} 使用这两种格式,表单不会显示所选的下拉列表。 看起来searchlogic对象中的格式也使用了时区调整时间。 有关如何处理这个的任何想法?

获取Rails ActiveRecord’datetime’属性作为DateTime对象

我的一个模型中有一个包含日期/时间值的属性,并在我的迁移中使用t.datetime :ended_on声明。 当我使用myevent.ended_on获取此值时,我得到一个Time对象。 问题是,当我尝试将此属性用作Flotilla图表中的轴时,它无法正常工作,因为Flotilla仅将日期识别为Date或DateTime对象。 我想过编写一个将现有Time值转换为DateTime的虚拟属性,但是我很担心这样做,因为我听说时间不能处理2040年以后的日期,我不希望有可能造成“2040虫子”后来担心。 有没有什么办法可以说服ActiveRecord为这个属性而不是Time对象返回DateTime对象?

如何编写仅查看日期时间字段的时间组件的activerecord查询?

是否可以执行仅查看日期时间字段的时间组件的activerecord查询? 例如Battle.where(‘start_time ?’,’12:00′,’06:00′) 找到所有在早上6点到中午12点之间开始的战斗而不管它们发生的那一天? 在此示例中,start_time被定义为日期时间。

Ruby on Rails和Active Record独立脚本在数据库值上不同意:timestamps

我今天早些时候发布了一个问题,当时我还没有对这个问题进行过调整。 我会在这里更简洁。 我在Windows上使用MySQL运行RoR 2.1.2。 SQL Server的本机时区是UTC。 我当地的时区是太平洋(-0800) 我有一个带有:timestamp类型列的模型,我可以使用以下方法执行以下操作: record = Record.find(:first) record.the_time = Time.now() 当我在数据库中执行“select * from records”时,显示的时间是我当地时间提前8小时,这是正确的,因为数据库是在UTC上。 (我已经通过简单的’select now()’和’select utc_timestamp()’来validation它是’在utc中思考’) 这就是麻烦开始的地方。 如果我在视图中显示时间: …然后我回到正确的时间,以UTC格式显示。 如果我在当地时间16:40:00写入数据库,则数据库显示00:40:00。 但是,如果我运行的是独立脚本: record = Record.find(:first) puts record.the_time …然后我回到我存储在数据库中的UTC时间(00:40:00),但是使用本地时区: Wed Nov 26 00:40:00 (-0800) 2008 ……八小时的时间扭曲 为什么存储时间会正确地转换它,但检索它不是吗? 如果我比较数据库中最近过去的存储时间并将其与当前时间进行比较,则当前时间较少 – 告诉我这不仅仅是字符串转换问题。 有任何想法吗?

ActiveRecord将字符串解析为datetime?

如果我在创建新的AR对象时将String传递给Datetime列,它将自动解析: 1.9.2p290 :011 > Movie.new(:release_date=>”21-Nov-1990″) => # Rails或ActiveRecord如何做到这一点? 它使用哪种方法?

如何更改ActiveAdmin显示时间的方式(每次)

由于数据库中的默认时间是utc,我希望能够在用户正确的时间内显示它。 要做到这一点,我必须采取column :created_at并将其更改为: index do … column :created_at, :sortable => :created_at do |obj| obj.created_at.localtime.strftime(“%B %d, %Y %H:%M) end … end 看起来很容易做一两次,但是当你需要覆盖每个索引和show方法时,这个过程会有点麻烦。 有没有办法覆盖ActiveAdmin显示时间的方式而不必覆盖每次出现? 我知道我可以创建一个函数或者可能更好地使用时间提供的函数,但是每次我想显示时间时我仍然必须使用它。 我想覆盖它而不用担心我错过了一个。